diff options
author | buzbee <buzbee@google.com> | 2014-06-19 15:04:12 -0700 |
---|---|---|
committer | buzbee <buzbee@google.com> | 2014-06-19 15:04:12 -0700 |
commit | 54ee4442a3bd5169258c32234c5dfc187360b043 (patch) | |
tree | 83f5945baf1c4300d33c1343d234bc181f5dcf82 /compiler | |
parent | a81fe3d512ef846aad3398222afd1f0588bbaf7c (diff) | |
download | art-54ee4442a3bd5169258c32234c5dfc187360b043.zip art-54ee4442a3bd5169258c32234c5dfc187360b043.tar.gz art-54ee4442a3bd5169258c32234c5dfc187360b043.tar.bz2 |
Quick compiler: remove Arm64 "EXPERIMENTAL" filter
Support for the compilation of all dex opcodes should now exist.
We'll go ahead and leave the filter code in for a new weeks, as it
may be handy if we need a quick workaround.
Change-Id: I8f1857136d78347b7d2337db2c793ad41ad45cb9
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/dex/frontend.cc | 311 |
1 files changed, 151 insertions, 160 deletions
diff --git a/compiler/dex/frontend.cc b/compiler/dex/frontend.cc index c02d089..414d514 100644 --- a/compiler/dex/frontend.cc +++ b/compiler/dex/frontend.cc @@ -134,9 +134,6 @@ void CompilationUnit::EndTiming() { } } -// Enable opcodes that mostly work, but produce assertion errors (thus breaking libartd.so). -#define ARM64_USE_EXPERIMENTAL_OPCODES 0 - // TODO: Remove this when we are able to compile everything. int arm64_support_list[] = { Instruction::NOP, @@ -149,6 +146,9 @@ int arm64_support_list[] = { Instruction::MOVE_OBJECT, Instruction::MOVE_OBJECT_FROM16, Instruction::MOVE_OBJECT_16, + Instruction::MOVE_RESULT, + Instruction::MOVE_RESULT_WIDE, + Instruction::MOVE_RESULT_OBJECT, Instruction::MOVE_EXCEPTION, Instruction::RETURN_VOID, Instruction::RETURN, @@ -163,9 +163,19 @@ int arm64_support_list[] = { Instruction::CONST_WIDE, Instruction::CONST_WIDE_HIGH16, Instruction::CONST_STRING, + Instruction::CONST_STRING_JUMBO, + Instruction::CONST_CLASS, Instruction::MONITOR_ENTER, Instruction::MONITOR_EXIT, - // Instruction::THROW, + Instruction::CHECK_CAST, + Instruction::INSTANCE_OF, + Instruction::ARRAY_LENGTH, + Instruction::NEW_INSTANCE, + Instruction::NEW_ARRAY, + Instruction::FILLED_NEW_ARRAY, + Instruction::FILLED_NEW_ARRAY_RANGE, + Instruction::FILL_ARRAY_DATA, + Instruction::THROW, Instruction::GOTO, Instruction::GOTO_16, Instruction::GOTO_32, @@ -188,89 +198,72 @@ int arm64_support_list[] = { Instruction::IF_GEZ, Instruction::IF_GTZ, Instruction::IF_LEZ, - Instruction::NEG_INT, - Instruction::NOT_INT, - Instruction::NEG_FLOAT, - Instruction::INT_TO_BYTE, - Instruction::INT_TO_CHAR, - Instruction::INT_TO_SHORT, - Instruction::ADD_INT, - Instruction::SUB_INT, - Instruction::MUL_INT, - Instruction::DIV_INT, - Instruction::REM_INT, - Instruction::AND_INT, - Instruction::OR_INT, - Instruction::XOR_INT, - Instruction::SHL_INT, - Instruction::SHR_INT, - Instruction::USHR_INT, - Instruction::ADD_FLOAT, - Instruction::SUB_FLOAT, - Instruction::MUL_FLOAT, - Instruction::DIV_FLOAT, - Instruction::ADD_INT_2ADDR, - Instruction::SUB_INT_2ADDR, - Instruction::MUL_INT_2ADDR, - Instruction::DIV_INT_2ADDR, - Instruction::REM_INT_2ADDR, - Instruction::AND_INT_2ADDR, - Instruction::OR_INT_2ADDR, - Instruction::XOR_INT_2ADDR, - Instruction::SHL_INT_2ADDR, - Instruction::SHR_INT_2ADDR, - Instruction::USHR_INT_2ADDR, - Instruction::ADD_FLOAT_2ADDR, - Instruction::SUB_FLOAT_2ADDR, - Instruction::MUL_FLOAT_2ADDR, - Instruction::DIV_FLOAT_2ADDR, - Instruction::ADD_INT_LIT16, - Instruction::RSUB_INT, - Instruction::MUL_INT_LIT16, - Instruction::DIV_INT_LIT16, - Instruction::REM_INT_LIT16, - Instruction::AND_INT_LIT16, - Instruction::OR_INT_LIT16, - Instruction::XOR_INT_LIT16, - Instruction::ADD_INT_LIT8, - Instruction::RSUB_INT_LIT8, - Instruction::MUL_INT_LIT8, - Instruction::DIV_INT_LIT8, - Instruction::REM_INT_LIT8, - Instruction::AND_INT_LIT8, - Instruction::OR_INT_LIT8, - Instruction::XOR_INT_LIT8, - Instruction::SHL_INT_LIT8, - Instruction::SHR_INT_LIT8, - Instruction::USHR_INT_LIT8, - Instruction::SGET, - Instruction::SGET_BOOLEAN, - Instruction::SGET_BYTE, - Instruction::SGET_CHAR, - Instruction::SGET_SHORT, - Instruction::SGET_OBJECT, - Instruction::SPUT, - Instruction::SPUT_OBJECT, - Instruction::SPUT_BOOLEAN, - Instruction::SPUT_BYTE, - Instruction::SPUT_CHAR, - Instruction::SPUT_SHORT, - Instruction::CMPL_FLOAT, - Instruction::CMPG_FLOAT, + Instruction::UNUSED_3E, + Instruction::UNUSED_3F, + Instruction::UNUSED_40, + Instruction::UNUSED_41, + Instruction::UNUSED_42, + Instruction::UNUSED_43, + Instruction::AGET, + Instruction::AGET_WIDE, + Instruction::AGET_OBJECT, + Instruction::AGET_BOOLEAN, + Instruction::AGET_BYTE, + Instruction::AGET_CHAR, + Instruction::AGET_SHORT, + Instruction::APUT, + Instruction::APUT_WIDE, + Instruction::APUT_OBJECT, + Instruction::APUT_BOOLEAN, + Instruction::APUT_BYTE, + Instruction::APUT_CHAR, + Instruction::APUT_SHORT, Instruction::IGET, + Instruction::IGET_WIDE, Instruction::IGET_OBJECT, Instruction::IGET_BOOLEAN, Instruction::IGET_BYTE, Instruction::IGET_CHAR, Instruction::IGET_SHORT, Instruction::IPUT, + Instruction::IPUT_WIDE, Instruction::IPUT_OBJECT, Instruction::IPUT_BOOLEAN, Instruction::IPUT_BYTE, Instruction::IPUT_CHAR, Instruction::IPUT_SHORT, + Instruction::SGET, + Instruction::SGET_WIDE, + Instruction::SGET_OBJECT, + Instruction::SGET_BOOLEAN, + Instruction::SGET_BYTE, + Instruction::SGET_CHAR, + Instruction::SGET_SHORT, + Instruction::SPUT, + Instruction::SPUT_WIDE, + Instruction::SPUT_OBJECT, + Instruction::SPUT_BOOLEAN, + Instruction::SPUT_BYTE, + Instruction::SPUT_CHAR, + Instruction::SPUT_SHORT, + Instruction::INVOKE_VIRTUAL, + Instruction::INVOKE_SUPER, + Instruction::INVOKE_DIRECT, + Instruction::INVOKE_STATIC, + Instruction::INVOKE_INTERFACE, + Instruction::RETURN_VOID_BARRIER, + Instruction::INVOKE_VIRTUAL_RANGE, + Instruction::INVOKE_SUPER_RANGE, + Instruction::INVOKE_DIRECT_RANGE, + Instruction::INVOKE_STATIC_RANGE, + Instruction::INVOKE_INTERFACE_RANGE, + Instruction::UNUSED_79, + Instruction::UNUSED_7A, + Instruction::NEG_INT, + Instruction::NOT_INT, Instruction::NEG_LONG, Instruction::NOT_LONG, + Instruction::NEG_FLOAT, Instruction::NEG_DOUBLE, Instruction::INT_TO_LONG, Instruction::INT_TO_FLOAT, @@ -284,6 +277,20 @@ int arm64_support_list[] = { Instruction::DOUBLE_TO_INT, Instruction::DOUBLE_TO_LONG, Instruction::DOUBLE_TO_FLOAT, + Instruction::INT_TO_BYTE, + Instruction::INT_TO_CHAR, + Instruction::INT_TO_SHORT, + Instruction::ADD_INT, + Instruction::SUB_INT, + Instruction::MUL_INT, + Instruction::DIV_INT, + Instruction::REM_INT, + Instruction::AND_INT, + Instruction::OR_INT, + Instruction::XOR_INT, + Instruction::SHL_INT, + Instruction::SHR_INT, + Instruction::USHR_INT, Instruction::ADD_LONG, Instruction::SUB_LONG, Instruction::MUL_LONG, @@ -295,12 +302,27 @@ int arm64_support_list[] = { Instruction::SHL_LONG, Instruction::SHR_LONG, Instruction::USHR_LONG, - // Instruction::REM_FLOAT, + Instruction::ADD_FLOAT, + Instruction::SUB_FLOAT, + Instruction::MUL_FLOAT, + Instruction::DIV_FLOAT, + Instruction::REM_FLOAT, Instruction::ADD_DOUBLE, Instruction::SUB_DOUBLE, Instruction::MUL_DOUBLE, Instruction::DIV_DOUBLE, - // Instruction::REM_DOUBLE, + Instruction::REM_DOUBLE, + Instruction::ADD_INT_2ADDR, + Instruction::SUB_INT_2ADDR, + Instruction::MUL_INT_2ADDR, + Instruction::DIV_INT_2ADDR, + Instruction::REM_INT_2ADDR, + Instruction::AND_INT_2ADDR, + Instruction::OR_INT_2ADDR, + Instruction::XOR_INT_2ADDR, + Instruction::SHL_INT_2ADDR, + Instruction::SHR_INT_2ADDR, + Instruction::USHR_INT_2ADDR, Instruction::ADD_LONG_2ADDR, Instruction::SUB_LONG_2ADDR, Instruction::MUL_LONG_2ADDR, @@ -312,13 +334,64 @@ int arm64_support_list[] = { Instruction::SHL_LONG_2ADDR, Instruction::SHR_LONG_2ADDR, Instruction::USHR_LONG_2ADDR, - // Instruction::REM_FLOAT_2ADDR, + Instruction::ADD_FLOAT_2ADDR, + Instruction::SUB_FLOAT_2ADDR, + Instruction::MUL_FLOAT_2ADDR, + Instruction::DIV_FLOAT_2ADDR, + Instruction::REM_FLOAT_2ADDR, Instruction::ADD_DOUBLE_2ADDR, Instruction::SUB_DOUBLE_2ADDR, Instruction::MUL_DOUBLE_2ADDR, Instruction::DIV_DOUBLE_2ADDR, - // Instruction::REM_DOUBLE_2ADDR, - // TODO(Arm64): Enable compiler pass + Instruction::REM_DOUBLE_2ADDR, + Instruction::ADD_INT_LIT16, + Instruction::RSUB_INT, + Instruction::MUL_INT_LIT16, + Instruction::DIV_INT_LIT16, + Instruction::REM_INT_LIT16, + Instruction::AND_INT_LIT16, + Instruction::OR_INT_LIT16, + Instruction::XOR_INT_LIT16, + Instruction::ADD_INT_LIT8, + Instruction::RSUB_INT_LIT8, + Instruction::MUL_INT_LIT8, + Instruction::DIV_INT_LIT8, + Instruction::REM_INT_LIT8, + Instruction::AND_INT_LIT8, + Instruction::OR_INT_LIT8, + Instruction::XOR_INT_LIT8, + Instruction::SHL_INT_LIT8, + Instruction::SHR_INT_LIT8, + Instruction::USHR_INT_LIT8, + Instruction::IGET_QUICK, + Instruction::IGET_WIDE_QUICK, + Instruction::IGET_OBJECT_QUICK, + Instruction::IPUT_QUICK, + Instruction::IPUT_WIDE_QUICK, + Instruction::IPUT_OBJECT_QUICK, + Instruction::INVOKE_VIRTUAL_QUICK, + Instruction::INVOKE_VIRTUAL_RANGE_QUICK, + Instruction::UNUSED_EB, + Instruction::UNUSED_EC, + Instruction::UNUSED_ED, + Instruction::UNUSED_EE, + Instruction::UNUSED_EF, + Instruction::UNUSED_F0, + Instruction::UNUSED_F1, + Instruction::UNUSED_F2, + Instruction::UNUSED_F3, + Instruction::UNUSED_F4, + Instruction::UNUSED_F5, + Instruction::UNUSED_F6, + Instruction::UNUSED_F7, + Instruction::UNUSED_F8, + Instruction::UNUSED_F9, + Instruction::UNUSED_FA, + Instruction::UNUSED_FB, + Instruction::UNUSED_FC, + Instruction::UNUSED_FD, + Instruction::UNUSED_FE, + Instruction::UNUSED_FF, // ----- ExtendedMIROpcode ----- kMirOpPhi, kMirOpCopy, @@ -334,88 +407,6 @@ int arm64_support_list[] = { kMirOpCheck, kMirOpCheckPart2, kMirOpSelect, - -#if ARM64_USE_EXPERIMENTAL_OPCODES - Instruction::MOVE_RESULT, - Instruction::MOVE_RESULT_WIDE, - Instruction::MOVE_RESULT_OBJECT, - Instruction::CONST_STRING_JUMBO, - Instruction::CONST_CLASS, - Instruction::CHECK_CAST, - Instruction::INSTANCE_OF, - Instruction::ARRAY_LENGTH, - Instruction::NEW_INSTANCE, - Instruction::NEW_ARRAY, - Instruction::FILLED_NEW_ARRAY, - Instruction::FILLED_NEW_ARRAY_RANGE, - Instruction::FILL_ARRAY_DATA, - // Instruction::UNUSED_3E, - // Instruction::UNUSED_3F, - // Instruction::UNUSED_40, - // Instruction::UNUSED_41, - // Instruction::UNUSED_42, - // Instruction::UNUSED_43, - Instruction::AGET, - Instruction::AGET_WIDE, - Instruction::AGET_OBJECT, - Instruction::AGET_BOOLEAN, - Instruction::AGET_BYTE, - Instruction::AGET_CHAR, - Instruction::AGET_SHORT, - Instruction::APUT, - Instruction::APUT_WIDE, - Instruction::APUT_OBJECT, - Instruction::APUT_BOOLEAN, - Instruction::APUT_BYTE, - Instruction::APUT_CHAR, - Instruction::APUT_SHORT, - Instruction::IPUT_WIDE, - Instruction::IGET_WIDE, - Instruction::SGET_WIDE, - Instruction::SPUT_WIDE, - Instruction::INVOKE_VIRTUAL, - Instruction::INVOKE_SUPER, - Instruction::INVOKE_DIRECT, - Instruction::INVOKE_STATIC, - Instruction::INVOKE_INTERFACE, - Instruction::RETURN_VOID_BARRIER, - Instruction::INVOKE_VIRTUAL_RANGE, - Instruction::INVOKE_SUPER_RANGE, - Instruction::INVOKE_DIRECT_RANGE, - Instruction::INVOKE_STATIC_RANGE, - Instruction::INVOKE_INTERFACE_RANGE, - // Instruction::UNUSED_79, - // Instruction::UNUSED_7A, - // Instruction::IGET_QUICK, - // Instruction::IGET_WIDE_QUICK, - // Instruction::IGET_OBJECT_QUICK, - // Instruction::IPUT_QUICK, - // Instruction::IPUT_WIDE_QUICK, - // Instruction::IPUT_OBJECT_QUICK, - // Instruction::INVOKE_VIRTUAL_QUICK, - // Instruction::INVOKE_VIRTUAL_RANGE_QUICK, - // Instruction::UNUSED_EB, - // Instruction::UNUSED_EC, - // Instruction::UNUSED_ED, - // Instruction::UNUSED_EE, - // Instruction::UNUSED_EF, - // Instruction::UNUSED_F0, - // Instruction::UNUSED_F1, - // Instruction::UNUSED_F2, - // Instruction::UNUSED_F3, - // Instruction::UNUSED_F4, - // Instruction::UNUSED_F5, - // Instruction::UNUSED_F6, - // Instruction::UNUSED_F7, - // Instruction::UNUSED_F8, - // Instruction::UNUSED_F9, - // Instruction::UNUSED_FA, - // Instruction::UNUSED_FB, - // Instruction::UNUSED_FC, - // Instruction::UNUSED_FD, - // Instruction::UNUSED_FE, - // Instruction::UNUSED_FF, -#endif /* ARM64_USE_EXPERIMENTAL_OPCODES */ }; // TODO: Remove this when we are able to compile everything. |