blob: d2e97904eeaf33d0901978a7ef562d8bee399a32 [file] [log] [blame]
#!/bin/sh
#
# Run the code in test.jar on the device. The jar should contain a top-level
# class named Main to run.
#
# Options:
# --quiet -- don't chatter
# --debug -- wait for debugger to attach
# --zygote -- use the zygote (if so, all other options are ignored)
# --dev -- development mode (print the vm invocation cmdline)
# --no-verify -- turn off verification (on by default)
# --no-optimize -- turn off optimization (on by default)
# --no-precise -- turn off precise GC (on by default)
msg() {
if [ "$QUIET" = "n" ]; then
echo "$@"
fi
}
OATEXEC="oatexec"
DEBUG="n"
VERIFY="y"
OPTIMIZE="y"
ZYGOTE="n"
QUIET="n"
DEV_MODE="n"
INVOKE_WITH=""
while true; do
if [ "x$1" = "x--quiet" ]; then
QUIET="y"
shift
elif [ "x$1" = "x-d" ]; then
OATEXEC="oatexecd"
shift
elif [ "x$1" = "x--debug" ]; then
DEBUG="y"
shift
elif [ "x$1" = "x--zygote" ]; then
ZYGOTE="y"
msg "Spawning from zygote"
shift
elif [ "x$1" = "x--dev" ]; then
DEV_MODE="y"
shift
elif [ "x$1" = "x--invoke-with" ]; then
shift
INVOKE_WITH="$1"
shift
elif [ "x$1" = "x--no-verify" ]; then
VERIFY="n"
shift
elif [ "x$1" = "x--no-optimize" ]; then
OPTIMIZE="n"
shift
elif [ "x$1" = "x--" ]; then
shift
break
elif expr "x$1" : "x--" >/dev/null 2>&1; then
echo "unknown $0 option: $1" 1>&2
exit 1
else
break
fi
done
if [ "$ZYGOTE" = "n" ]; then
if [ "$OPTIMIZE" = "y" ]; then
if [ "$VERIFY" = "y" ]; then
DEX_OPTIMIZE="-Xdexopt:verified"
else
DEX_OPTIMIZE="-Xdexopt:all"
fi
msg "Performing optimizations"
else
DEX_OPTIMIZE="-Xdexopt:none"
msg "Skipping optimizations"
fi
if [ "$VERIFY" = "y" ]; then
DEX_VERIFY=""
msg "Performing verification"
else
DEX_VERIFY="-Xverify:none"
msg "Skipping verification"
fi
fi
msg "------------------------------"
if [ "$QUIET" = "n" ]; then
adb shell mkdir /data/art-test
adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar /data/art-test
adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar.oat /data/art-test
adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar /data/art-test
adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar.oat /data/art-test
else
adb shell mkdir /data/art-test >/dev/null 2>&1
adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar /data/art-test >/dev/null 2>&1
adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar.oat /data/art-test >/dev/null 2>&1
adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar /data/art-test >/dev/null 2>&1
adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar.oat /data/art-test >/dev/null 2>&1
fi
if [ "$DEBUG" = "y" ]; then
# This is for ddms:
#DEX_DEBUG="-agentlib:jdwp=transport=dt_android_adb,server=y,suspend=y"
# Connect by running 'ddms'.
# This is for jdb:
DEX_DEBUG="-agentlib:jdwp=transport=dt_socket,address=12345,server=y,suspend=y"
# Connect thus:
# adb forward tcp:12345 tcp:12345
# jdb -attach localhost:12345
fi
if [ "$ZYGOTE" = "y" ]; then
adb shell cd /data \; dvz -classpath $TEST_NAME.jar Main "$@"
else
cmdline="cd /data; $INVOKE_WITH $OATEXEC ${DEX_DEBUG} -Xjnigreflimit:256 \
-Ximage:/data/art-test/core.art \
-cp /data/art-test/$TEST_NAME.jar \
Main"
#cmdline="cd /data; dalvikvm $DEX_VERIFY $DEX_OPTIMIZE $DEX_DEBUG \
# -cp test.jar -Xint:${INTERP} -ea Main"
if [ "$DEV_MODE" = "y" ]; then
echo $cmdline "$@"
fi
adb shell $cmdline "$@"
fi