summaryrefslogtreecommitdiffstats
path: root/libdex/DexOpcodes.cpp
diff options
context:
space:
mode:
authorDan Bornstein <danfuzz@android.com>2011-04-14 13:08:06 -0700
committerDan Bornstein <danfuzz@android.com>2011-04-14 13:32:49 -0700
commita70a3d8faa8f7332549fa0c9ae2008d428e28606 (patch)
tree44c87c48520df636c76e3b175e2d9d00efd5b28d /libdex/DexOpcodes.cpp
parentc6d2470eec726ae0ad95e4fd2d9d7da7cb2cdcba (diff)
downloadandroid_dalvik-a70a3d8faa8f7332549fa0c9ae2008d428e28606.tar.gz
android_dalvik-a70a3d8faa8f7332549fa0c9ae2008d428e28606.tar.bz2
android_dalvik-a70a3d8faa8f7332549fa0c9ae2008d428e28606.zip
Compile libdex as C++.
The major-looking code changes were all just to unravel some gotos. Change-Id: I86f98a48b160f357ce93c87446bad5d705d5f05b
Diffstat (limited to 'libdex/DexOpcodes.cpp')
-rw-r--r--libdex/DexOpcodes.cpp555
1 files changed, 555 insertions, 0 deletions
diff --git a/libdex/DexOpcodes.cpp b/libdex/DexOpcodes.cpp
new file mode 100644
index 000000000..50254a7e6
--- /dev/null
+++ b/libdex/DexOpcodes.cpp
@@ -0,0 +1,555 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * Table of Dalvik opcode names.
+ *
+ * IMPORTANT NOTE: The contents of this file are mostly generated
+ * automatically by the opcode-gen tool. Any edits to the generated
+ * sections will get wiped out the next time the tool is run.
+ */
+
+#include "DexOpcodes.h"
+#include <assert.h>
+
+/*
+ * Dalvik opcode names.
+ */
+static const char* gOpNames[kNumPackedOpcodes] = {
+ // BEGIN(libdex-opcode-names); GENERATED AUTOMATICALLY BY opcode-gen
+ "nop",
+ "move",
+ "move/from16",
+ "move/16",
+ "move-wide",
+ "move-wide/from16",
+ "move-wide/16",
+ "move-object",
+ "move-object/from16",
+ "move-object/16",
+ "move-result",
+ "move-result-wide",
+ "move-result-object",
+ "move-exception",
+ "return-void",
+ "return",
+ "return-wide",
+ "return-object",
+ "const/4",
+ "const/16",
+ "const",
+ "const/high16",
+ "const-wide/16",
+ "const-wide/32",
+ "const-wide",
+ "const-wide/high16",
+ "const-string",
+ "const-string/jumbo",
+ "const-class",
+ "monitor-enter",
+ "monitor-exit",
+ "check-cast",
+ "instance-of",
+ "array-length",
+ "new-instance",
+ "new-array",
+ "filled-new-array",
+ "filled-new-array/range",
+ "fill-array-data",
+ "throw",
+ "goto",
+ "goto/16",
+ "goto/32",
+ "packed-switch",
+ "sparse-switch",
+ "cmpl-float",
+ "cmpg-float",
+ "cmpl-double",
+ "cmpg-double",
+ "cmp-long",
+ "if-eq",
+ "if-ne",
+ "if-lt",
+ "if-ge",
+ "if-gt",
+ "if-le",
+ "if-eqz",
+ "if-nez",
+ "if-ltz",
+ "if-gez",
+ "if-gtz",
+ "if-lez",
+ "unused-3e",
+ "unused-3f",
+ "unused-40",
+ "unused-41",
+ "unused-42",
+ "unused-43",
+ "aget",
+ "aget-wide",
+ "aget-object",
+ "aget-boolean",
+ "aget-byte",
+ "aget-char",
+ "aget-short",
+ "aput",
+ "aput-wide",
+ "aput-object",
+ "aput-boolean",
+ "aput-byte",
+ "aput-char",
+ "aput-short",
+ "iget",
+ "iget-wide",
+ "iget-object",
+ "iget-boolean",
+ "iget-byte",
+ "iget-char",
+ "iget-short",
+ "iput",
+ "iput-wide",
+ "iput-object",
+ "iput-boolean",
+ "iput-byte",
+ "iput-char",
+ "iput-short",
+ "sget",
+ "sget-wide",
+ "sget-object",
+ "sget-boolean",
+ "sget-byte",
+ "sget-char",
+ "sget-short",
+ "sput",
+ "sput-wide",
+ "sput-object",
+ "sput-boolean",
+ "sput-byte",
+ "sput-char",
+ "sput-short",
+ "invoke-virtual",
+ "invoke-super",
+ "invoke-direct",
+ "invoke-static",
+ "invoke-interface",
+ "unused-73",
+ "invoke-virtual/range",
+ "invoke-super/range",
+ "invoke-direct/range",
+ "invoke-static/range",
+ "invoke-interface/range",
+ "unused-79",
+ "unused-7a",
+ "neg-int",
+ "not-int",
+ "neg-long",
+ "not-long",
+ "neg-float",
+ "neg-double",
+ "int-to-long",
+ "int-to-float",
+ "int-to-double",
+ "long-to-int",
+ "long-to-float",
+ "long-to-double",
+ "float-to-int",
+ "float-to-long",
+ "float-to-double",
+ "double-to-int",
+ "double-to-long",
+ "double-to-float",
+ "int-to-byte",
+ "int-to-char",
+ "int-to-short",
+ "add-int",
+ "sub-int",
+ "mul-int",
+ "div-int",
+ "rem-int",
+ "and-int",
+ "or-int",
+ "xor-int",
+ "shl-int",
+ "shr-int",
+ "ushr-int",
+ "add-long",
+ "sub-long",
+ "mul-long",
+ "div-long",
+ "rem-long",
+ "and-long",
+ "or-long",
+ "xor-long",
+ "shl-long",
+ "shr-long",
+ "ushr-long",
+ "add-float",
+ "sub-float",
+ "mul-float",
+ "div-float",
+ "rem-float",
+ "add-double",
+ "sub-double",
+ "mul-double",
+ "div-double",
+ "rem-double",
+ "add-int/2addr",
+ "sub-int/2addr",
+ "mul-int/2addr",
+ "div-int/2addr",
+ "rem-int/2addr",
+ "and-int/2addr",
+ "or-int/2addr",
+ "xor-int/2addr",
+ "shl-int/2addr",
+ "shr-int/2addr",
+ "ushr-int/2addr",
+ "add-long/2addr",
+ "sub-long/2addr",
+ "mul-long/2addr",
+ "div-long/2addr",
+ "rem-long/2addr",
+ "and-long/2addr",
+ "or-long/2addr",
+ "xor-long/2addr",
+ "shl-long/2addr",
+ "shr-long/2addr",
+ "ushr-long/2addr",
+ "add-float/2addr",
+ "sub-float/2addr",
+ "mul-float/2addr",
+ "div-float/2addr",
+ "rem-float/2addr",
+ "add-double/2addr",
+ "sub-double/2addr",
+ "mul-double/2addr",
+ "div-double/2addr",
+ "rem-double/2addr",
+ "add-int/lit16",
+ "rsub-int",
+ "mul-int/lit16",
+ "div-int/lit16",
+ "rem-int/lit16",
+ "and-int/lit16",
+ "or-int/lit16",
+ "xor-int/lit16",
+ "add-int/lit8",
+ "rsub-int/lit8",
+ "mul-int/lit8",
+ "div-int/lit8",
+ "rem-int/lit8",
+ "and-int/lit8",
+ "or-int/lit8",
+ "xor-int/lit8",
+ "shl-int/lit8",
+ "shr-int/lit8",
+ "ushr-int/lit8",
+ "+iget-volatile",
+ "+iput-volatile",
+ "+sget-volatile",
+ "+sput-volatile",
+ "+iget-object-volatile",
+ "+iget-wide-volatile",
+ "+iput-wide-volatile",
+ "+sget-wide-volatile",
+ "+sput-wide-volatile",
+ "^breakpoint",
+ "^throw-verification-error",
+ "+execute-inline",
+ "+execute-inline/range",
+ "+invoke-object-init/range",
+ "+return-void-barrier",
+ "+iget-quick",
+ "+iget-wide-quick",
+ "+iget-object-quick",
+ "+iput-quick",
+ "+iput-wide-quick",
+ "+iput-object-quick",
+ "+invoke-virtual-quick",
+ "+invoke-virtual-quick/range",
+ "+invoke-super-quick",
+ "+invoke-super-quick/range",
+ "+iput-object-volatile",
+ "+sget-object-volatile",
+ "+sput-object-volatile",
+ "dispatch-ff",
+ "const-class/jumbo",
+ "check-cast/jumbo",
+ "instance-of/jumbo",
+ "new-instance/jumbo",
+ "new-array/jumbo",
+ "filled-new-array/jumbo",
+ "iget/jumbo",
+ "iget-wide/jumbo",
+ "iget-object/jumbo",
+ "iget-boolean/jumbo",
+ "iget-byte/jumbo",
+ "iget-char/jumbo",
+ "iget-short/jumbo",
+ "iput/jumbo",
+ "iput-wide/jumbo",
+ "iput-object/jumbo",
+ "iput-boolean/jumbo",
+ "iput-byte/jumbo",
+ "iput-char/jumbo",
+ "iput-short/jumbo",
+ "sget/jumbo",
+ "sget-wide/jumbo",
+ "sget-object/jumbo",
+ "sget-boolean/jumbo",
+ "sget-byte/jumbo",
+ "sget-char/jumbo",
+ "sget-short/jumbo",
+ "sput/jumbo",
+ "sput-wide/jumbo",
+ "sput-object/jumbo",
+ "sput-boolean/jumbo",
+ "sput-byte/jumbo",
+ "sput-char/jumbo",
+ "sput-short/jumbo",
+ "invoke-virtual/jumbo",
+ "invoke-super/jumbo",
+ "invoke-direct/jumbo",
+ "invoke-static/jumbo",
+ "invoke-interface/jumbo",
+ "unused-27ff",
+ "unused-28ff",
+ "unused-29ff",
+ "unused-2aff",
+ "unused-2bff",
+ "unused-2cff",
+ "unused-2dff",
+ "unused-2eff",
+ "unused-2fff",
+ "unused-30ff",
+ "unused-31ff",
+ "unused-32ff",
+ "unused-33ff",
+ "unused-34ff",
+ "unused-35ff",
+ "unused-36ff",
+ "unused-37ff",
+ "unused-38ff",
+ "unused-39ff",
+ "unused-3aff",
+ "unused-3bff",
+ "unused-3cff",
+ "unused-3dff",
+ "unused-3eff",
+ "unused-3fff",
+ "unused-40ff",
+ "unused-41ff",
+ "unused-42ff",
+ "unused-43ff",
+ "unused-44ff",
+ "unused-45ff",
+ "unused-46ff",
+ "unused-47ff",
+ "unused-48ff",
+ "unused-49ff",
+ "unused-4aff",
+ "unused-4bff",
+ "unused-4cff",
+ "unused-4dff",
+ "unused-4eff",
+ "unused-4fff",
+ "unused-50ff",
+ "unused-51ff",
+ "unused-52ff",
+ "unused-53ff",
+ "unused-54ff",
+ "unused-55ff",
+ "unused-56ff",
+ "unused-57ff",
+ "unused-58ff",
+ "unused-59ff",
+ "unused-5aff",
+ "unused-5bff",
+ "unused-5cff",
+ "unused-5dff",
+ "unused-5eff",
+ "unused-5fff",
+ "unused-60ff",
+ "unused-61ff",
+ "unused-62ff",
+ "unused-63ff",
+ "unused-64ff",
+ "unused-65ff",
+ "unused-66ff",
+ "unused-67ff",
+ "unused-68ff",
+ "unused-69ff",
+ "unused-6aff",
+ "unused-6bff",
+ "unused-6cff",
+ "unused-6dff",
+ "unused-6eff",
+ "unused-6fff",
+ "unused-70ff",
+ "unused-71ff",
+ "unused-72ff",
+ "unused-73ff",
+ "unused-74ff",
+ "unused-75ff",
+ "unused-76ff",
+ "unused-77ff",
+ "unused-78ff",
+ "unused-79ff",
+ "unused-7aff",
+ "unused-7bff",
+ "unused-7cff",
+ "unused-7dff",
+ "unused-7eff",
+ "unused-7fff",
+ "unused-80ff",
+ "unused-81ff",
+ "unused-82ff",
+ "unused-83ff",
+ "unused-84ff",
+ "unused-85ff",
+ "unused-86ff",
+ "unused-87ff",
+ "unused-88ff",
+ "unused-89ff",
+ "unused-8aff",
+ "unused-8bff",
+ "unused-8cff",
+ "unused-8dff",
+ "unused-8eff",
+ "unused-8fff",
+ "unused-90ff",
+ "unused-91ff",
+ "unused-92ff",
+ "unused-93ff",
+ "unused-94ff",
+ "unused-95ff",
+ "unused-96ff",
+ "unused-97ff",
+ "unused-98ff",
+ "unused-99ff",
+ "unused-9aff",
+ "unused-9bff",
+ "unused-9cff",
+ "unused-9dff",
+ "unused-9eff",
+ "unused-9fff",
+ "unused-a0ff",
+ "unused-a1ff",
+ "unused-a2ff",
+ "unused-a3ff",
+ "unused-a4ff",
+ "unused-a5ff",
+ "unused-a6ff",
+ "unused-a7ff",
+ "unused-a8ff",
+ "unused-a9ff",
+ "unused-aaff",
+ "unused-abff",
+ "unused-acff",
+ "unused-adff",
+ "unused-aeff",
+ "unused-afff",
+ "unused-b0ff",
+ "unused-b1ff",
+ "unused-b2ff",
+ "unused-b3ff",
+ "unused-b4ff",
+ "unused-b5ff",
+ "unused-b6ff",
+ "unused-b7ff",
+ "unused-b8ff",
+ "unused-b9ff",
+ "unused-baff",
+ "unused-bbff",
+ "unused-bcff",
+ "unused-bdff",
+ "unused-beff",
+ "unused-bfff",
+ "unused-c0ff",
+ "unused-c1ff",
+ "unused-c2ff",
+ "unused-c3ff",
+ "unused-c4ff",
+ "unused-c5ff",
+ "unused-c6ff",
+ "unused-c7ff",
+ "unused-c8ff",
+ "unused-c9ff",
+ "unused-caff",
+ "unused-cbff",
+ "unused-ccff",
+ "unused-cdff",
+ "unused-ceff",
+ "unused-cfff",
+ "unused-d0ff",
+ "unused-d1ff",
+ "unused-d2ff",
+ "unused-d3ff",
+ "unused-d4ff",
+ "unused-d5ff",
+ "unused-d6ff",
+ "unused-d7ff",
+ "unused-d8ff",
+ "unused-d9ff",
+ "unused-daff",
+ "unused-dbff",
+ "unused-dcff",
+ "unused-ddff",
+ "unused-deff",
+ "unused-dfff",
+ "unused-e0ff",
+ "unused-e1ff",
+ "unused-e2ff",
+ "unused-e3ff",
+ "unused-e4ff",
+ "unused-e5ff",
+ "unused-e6ff",
+ "unused-e7ff",
+ "unused-e8ff",
+ "unused-e9ff",
+ "unused-eaff",
+ "unused-ebff",
+ "unused-ecff",
+ "unused-edff",
+ "unused-eeff",
+ "unused-efff",
+ "unused-f0ff",
+ "unused-f1ff",
+ "+invoke-object-init/jumbo",
+ "+iget-volatile/jumbo",
+ "+iget-wide-volatile/jumbo",
+ "+iget-object-volatile/jumbo",
+ "+iput-volatile/jumbo",
+ "+iput-wide-volatile/jumbo",
+ "+iput-object-volatile/jumbo",
+ "+sget-volatile/jumbo",
+ "+sget-wide-volatile/jumbo",
+ "+sget-object-volatile/jumbo",
+ "+sput-volatile/jumbo",
+ "+sput-wide-volatile/jumbo",
+ "+sput-object-volatile/jumbo",
+ "^throw-verification-error/jumbo",
+ // END(libdex-opcode-names)
+};
+
+/*
+ * Return the name of an opcode.
+ */
+const char* dexGetOpcodeName(Opcode op)
+{
+ assert(op >= 0 && op < kNumPackedOpcodes);
+ return gOpNames[op];
+}