OSDN Git Service

x86 mterp: reduce x86/x86-atom differences
authorbuzbee <buzbee@google.com>
Sun, 12 Sep 2010 21:20:01 +0000 (14:20 -0700)
committerbuzbee <buzbee@google.com>
Mon, 20 Sep 2010 17:40:25 +0000 (10:40 -0700)
commitf3e177289ac078f18401cfd8eebafe584dd0d01f
treef9fc29a33eabb61f8f59242308e243501a5cbac2
parent4a48c69f3b64142e9de2ed2b5d9ab3fb8bc8a2c4
x86 mterp: reduce x86/x86-atom differences

To ease future x86 development, elminate unnecessary differences
between x86 and x86-atom targets.

1.  Macros instead of defines (cosmetic change)
2.  Register naming convention (cosmetic change)
3.  Register usage convention
    - Drop rIBASE, freeing %edx for general usage
    - use %edi for rPC (callee-save) & eliminate spills
4.  Spill & temp frame layout
5.  rGLUE usage 0(%ebp) instead of -24(%ebp)
6.  Jump table transition between instruction interpretations
    instead of computed goto.
7.  Change entry convention for instruction handlers:
    Previously:
       %bl contains 8-bit Dalvik opcode
       %bh contains 2nd half of 16-bit Dalvik insn (usually AA or BA)
       upper 16 bits of %ebx are zero
    Now:
       %bl contains 2nd half of 16-bit Dalvik insn (usually AA or BA)
       upper 24 bits of %ebx are zero
8.  Include copies of x86-atom macros and defines into x86 build.  This
    allows the x86 build to mix-and-match x86 and x86-atom handlers
    via the normal config mechanism.  [Note - only for non-control-flow
    instructions.  There are still some conflicts in the footer.S
    main loop re-entry points].

Change-Id: Ib9d549b56f7ffd7420f9dbf97b2169f65603ee83
129 files changed:
vm/mterp/out/InterpAsm-x86.S
vm/mterp/x86/OP_ADD_LONG.S
vm/mterp/x86/OP_ADD_LONG_2ADDR.S
vm/mterp/x86/OP_AGET.S
vm/mterp/x86/OP_AGET_WIDE.S
vm/mterp/x86/OP_AND_LONG.S
vm/mterp/x86/OP_AND_LONG_2ADDR.S
vm/mterp/x86/OP_APUT.S
vm/mterp/x86/OP_APUT_OBJECT.S
vm/mterp/x86/OP_APUT_WIDE.S
vm/mterp/x86/OP_ARRAY_LENGTH.S
vm/mterp/x86/OP_CHECK_CAST.S
vm/mterp/x86/OP_CMPG_DOUBLE.S
vm/mterp/x86/OP_CMP_LONG.S
vm/mterp/x86/OP_CONST.S
vm/mterp/x86/OP_CONST_16.S
vm/mterp/x86/OP_CONST_4.S
vm/mterp/x86/OP_CONST_CLASS.S
vm/mterp/x86/OP_CONST_HIGH16.S
vm/mterp/x86/OP_CONST_STRING.S
vm/mterp/x86/OP_CONST_STRING_JUMBO.S
vm/mterp/x86/OP_CONST_WIDE.S
vm/mterp/x86/OP_CONST_WIDE_16.S
vm/mterp/x86/OP_CONST_WIDE_32.S
vm/mterp/x86/OP_CONST_WIDE_HIGH16.S
vm/mterp/x86/OP_DIV_LONG.S
vm/mterp/x86/OP_DIV_LONG_2ADDR.S
vm/mterp/x86/OP_EXECUTE_INLINE.S
vm/mterp/x86/OP_FILLED_NEW_ARRAY.S
vm/mterp/x86/OP_FILL_ARRAY_DATA.S
vm/mterp/x86/OP_GOTO.S
vm/mterp/x86/OP_GOTO_16.S
vm/mterp/x86/OP_GOTO_32.S
vm/mterp/x86/OP_IGET.S
vm/mterp/x86/OP_IGET_QUICK.S
vm/mterp/x86/OP_IGET_WIDE.S
vm/mterp/x86/OP_IGET_WIDE_QUICK.S
vm/mterp/x86/OP_INSTANCE_OF.S
vm/mterp/x86/OP_INT_TO_LONG.S
vm/mterp/x86/OP_INVOKE_DIRECT.S
vm/mterp/x86/OP_INVOKE_DIRECT_EMPTY.S
vm/mterp/x86/OP_INVOKE_INTERFACE.S
vm/mterp/x86/OP_INVOKE_STATIC.S
vm/mterp/x86/OP_INVOKE_SUPER.S
vm/mterp/x86/OP_INVOKE_SUPER_QUICK.S
vm/mterp/x86/OP_INVOKE_VIRTUAL.S
vm/mterp/x86/OP_INVOKE_VIRTUAL_QUICK.S
vm/mterp/x86/OP_IPUT.S
vm/mterp/x86/OP_IPUT_BOOLEAN.S
vm/mterp/x86/OP_IPUT_BYTE.S
vm/mterp/x86/OP_IPUT_CHAR.S
vm/mterp/x86/OP_IPUT_OBJECT.S
vm/mterp/x86/OP_IPUT_OBJECT_QUICK.S
vm/mterp/x86/OP_IPUT_QUICK.S
vm/mterp/x86/OP_IPUT_SHORT.S
vm/mterp/x86/OP_IPUT_WIDE.S
vm/mterp/x86/OP_IPUT_WIDE_QUICK.S
vm/mterp/x86/OP_MONITOR_ENTER.S
vm/mterp/x86/OP_MONITOR_EXIT.S
vm/mterp/x86/OP_MOVE.S
vm/mterp/x86/OP_MOVE_16.S
vm/mterp/x86/OP_MOVE_EXCEPTION.S
vm/mterp/x86/OP_MOVE_FROM16.S
vm/mterp/x86/OP_MOVE_RESULT.S
vm/mterp/x86/OP_MOVE_RESULT_WIDE.S
vm/mterp/x86/OP_MOVE_WIDE.S
vm/mterp/x86/OP_MOVE_WIDE_16.S
vm/mterp/x86/OP_MOVE_WIDE_FROM16.S
vm/mterp/x86/OP_MUL_INT.S
vm/mterp/x86/OP_MUL_INT_2ADDR.S
vm/mterp/x86/OP_MUL_INT_LIT16.S
vm/mterp/x86/OP_MUL_INT_LIT8.S
vm/mterp/x86/OP_MUL_LONG.S
vm/mterp/x86/OP_MUL_LONG_2ADDR.S
vm/mterp/x86/OP_NEG_LONG.S
vm/mterp/x86/OP_NEW_ARRAY.S
vm/mterp/x86/OP_NEW_INSTANCE.S
vm/mterp/x86/OP_NOP.S
vm/mterp/x86/OP_NOT_LONG.S
vm/mterp/x86/OP_OR_LONG.S
vm/mterp/x86/OP_OR_LONG_2ADDR.S
vm/mterp/x86/OP_PACKED_SWITCH.S
vm/mterp/x86/OP_REM_DOUBLE.S
vm/mterp/x86/OP_REM_DOUBLE_2ADDR.S
vm/mterp/x86/OP_REM_FLOAT.S
vm/mterp/x86/OP_REM_FLOAT_2ADDR.S
vm/mterp/x86/OP_RETURN.S
vm/mterp/x86/OP_RETURN_WIDE.S
vm/mterp/x86/OP_SGET.S
vm/mterp/x86/OP_SGET_WIDE.S
vm/mterp/x86/OP_SHL_LONG.S
vm/mterp/x86/OP_SHL_LONG_2ADDR.S
vm/mterp/x86/OP_SHR_LONG.S
vm/mterp/x86/OP_SHR_LONG_2ADDR.S
vm/mterp/x86/OP_SPUT.S
vm/mterp/x86/OP_SPUT_OBJECT.S
vm/mterp/x86/OP_SPUT_WIDE.S
vm/mterp/x86/OP_SUB_LONG.S
vm/mterp/x86/OP_SUB_LONG_2ADDR.S
vm/mterp/x86/OP_THROW.S
vm/mterp/x86/OP_THROW_VERIFICATION_ERROR.S
vm/mterp/x86/OP_USHR_LONG.S
vm/mterp/x86/OP_USHR_LONG_2ADDR.S
vm/mterp/x86/OP_XOR_LONG.S
vm/mterp/x86/OP_XOR_LONG_2ADDR.S
vm/mterp/x86/bincmp.S
vm/mterp/x86/bindiv.S
vm/mterp/x86/bindiv2addr.S
vm/mterp/x86/bindivLit16.S
vm/mterp/x86/bindivLit8.S
vm/mterp/x86/binflop.S
vm/mterp/x86/binflop2addr.S
vm/mterp/x86/binop.S
vm/mterp/x86/binop1.S
vm/mterp/x86/binop2addr.S
vm/mterp/x86/binopLit16.S
vm/mterp/x86/binopLit8.S
vm/mterp/x86/binopWide.S
vm/mterp/x86/binopWide2addr.S
vm/mterp/x86/cvtfp_int.S
vm/mterp/x86/entry.S
vm/mterp/x86/footer.S
vm/mterp/x86/fpcvt.S
vm/mterp/x86/header.S
vm/mterp/x86/shop2addr.S
vm/mterp/x86/stub.S
vm/mterp/x86/unop.S
vm/mterp/x86/unopWide.S
vm/mterp/x86/zcmp.S