blob: d2e97904eeaf33d0901978a7ef562d8bee399a32 [file] [log] [blame]
jeffhao5d1ac922011-09-29 17:41:15 -07001#!/bin/sh
2#
3# Run the code in test.jar on the device. The jar should contain a top-level
4# class named Main to run.
5#
6# Options:
7# --quiet -- don't chatter
jeffhao5d1ac922011-09-29 17:41:15 -07008# --debug -- wait for debugger to attach
9# --zygote -- use the zygote (if so, all other options are ignored)
10# --dev -- development mode (print the vm invocation cmdline)
11# --no-verify -- turn off verification (on by default)
12# --no-optimize -- turn off optimization (on by default)
13# --no-precise -- turn off precise GC (on by default)
14
15msg() {
16 if [ "$QUIET" = "n" ]; then
17 echo "$@"
18 fi
19}
20
Elliott Hughes7c046102011-10-19 18:16:03 -070021OATEXEC="oatexec"
jeffhao5d1ac922011-09-29 17:41:15 -070022DEBUG="n"
23VERIFY="y"
24OPTIMIZE="y"
25ZYGOTE="n"
26QUIET="n"
jeffhao5d1ac922011-09-29 17:41:15 -070027DEV_MODE="n"
Elliott Hughes7c046102011-10-19 18:16:03 -070028INVOKE_WITH=""
jeffhao5d1ac922011-09-29 17:41:15 -070029
30while true; do
31 if [ "x$1" = "x--quiet" ]; then
32 QUIET="y"
33 shift
Elliott Hughes7c046102011-10-19 18:16:03 -070034 elif [ "x$1" = "x-d" ]; then
35 OATEXEC="oatexecd"
36 shift
jeffhao5d1ac922011-09-29 17:41:15 -070037 elif [ "x$1" = "x--debug" ]; then
38 DEBUG="y"
39 shift
40 elif [ "x$1" = "x--zygote" ]; then
41 ZYGOTE="y"
42 msg "Spawning from zygote"
43 shift
44 elif [ "x$1" = "x--dev" ]; then
45 DEV_MODE="y"
46 shift
Elliott Hughes7c046102011-10-19 18:16:03 -070047 elif [ "x$1" = "x--invoke-with" ]; then
48 shift
49 INVOKE_WITH="$1"
50 shift
jeffhao5d1ac922011-09-29 17:41:15 -070051 elif [ "x$1" = "x--no-verify" ]; then
52 VERIFY="n"
53 shift
54 elif [ "x$1" = "x--no-optimize" ]; then
55 OPTIMIZE="n"
56 shift
jeffhao5d1ac922011-09-29 17:41:15 -070057 elif [ "x$1" = "x--" ]; then
58 shift
59 break
60 elif expr "x$1" : "x--" >/dev/null 2>&1; then
Elliott Hughes7c046102011-10-19 18:16:03 -070061 echo "unknown $0 option: $1" 1>&2
jeffhao5d1ac922011-09-29 17:41:15 -070062 exit 1
63 else
64 break
65 fi
66done
67
68if [ "$ZYGOTE" = "n" ]; then
jeffhao5d1ac922011-09-29 17:41:15 -070069 if [ "$OPTIMIZE" = "y" ]; then
70 if [ "$VERIFY" = "y" ]; then
71 DEX_OPTIMIZE="-Xdexopt:verified"
72 else
73 DEX_OPTIMIZE="-Xdexopt:all"
74 fi
75 msg "Performing optimizations"
76 else
77 DEX_OPTIMIZE="-Xdexopt:none"
78 msg "Skipping optimizations"
79 fi
80
81 if [ "$VERIFY" = "y" ]; then
82 DEX_VERIFY=""
83 msg "Performing verification"
84 else
85 DEX_VERIFY="-Xverify:none"
86 msg "Skipping verification"
87 fi
88fi
89
90msg "------------------------------"
91
92if [ "$QUIET" = "n" ]; then
Elliott Hughes37476bd2012-02-01 12:07:37 -080093 adb shell mkdir /data/art-test
94 adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar /data/art-test
95 adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar.oat /data/art-test
Brian Carlstrom47a0d5a2011-10-12 21:20:05 -070096 adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar /data/art-test
Elliott Hughes37476bd2012-02-01 12:07:37 -080097 adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar.oat /data/art-test
jeffhao5d1ac922011-09-29 17:41:15 -070098else
Elliott Hughes37476bd2012-02-01 12:07:37 -080099 adb shell mkdir /data/art-test >/dev/null 2>&1
Brian Carlstrom47a0d5a2011-10-12 21:20:05 -0700100 adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar /data/art-test >/dev/null 2>&1
Elliott Hughes37476bd2012-02-01 12:07:37 -0800101 adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME.jar.oat /data/art-test >/dev/null 2>&1
Brian Carlstrom47a0d5a2011-10-12 21:20:05 -0700102 adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar /data/art-test >/dev/null 2>&1
Elliott Hughes37476bd2012-02-01 12:07:37 -0800103 adb push ${ANDROID_PRODUCT_OUT}/data/art-test/$TEST_NAME-ex.jar.oat /data/art-test >/dev/null 2>&1
jeffhao5d1ac922011-09-29 17:41:15 -0700104fi
105
106if [ "$DEBUG" = "y" ]; then
Elliott Hughesd1cc8362011-10-24 16:58:50 -0700107 # This is for ddms:
Elliott Hughesa2155262011-11-16 16:26:58 -0800108 #DEX_DEBUG="-agentlib:jdwp=transport=dt_android_adb,server=y,suspend=y"
Elliott Hughesd1cc8362011-10-24 16:58:50 -0700109 # Connect by running 'ddms'.
110
111 # This is for jdb:
Elliott Hughesa2155262011-11-16 16:26:58 -0800112 DEX_DEBUG="-agentlib:jdwp=transport=dt_socket,address=12345,server=y,suspend=y"
Elliott Hughesd1cc8362011-10-24 16:58:50 -0700113 # Connect thus:
114 # adb forward tcp:12345 tcp:12345
115 # jdb -attach localhost:12345
jeffhao5d1ac922011-09-29 17:41:15 -0700116fi
117
jeffhao5d1ac922011-09-29 17:41:15 -0700118if [ "$ZYGOTE" = "y" ]; then
Elliott Hughes8cbc8bc2011-10-04 11:19:45 -0700119 adb shell cd /data \; dvz -classpath $TEST_NAME.jar Main "$@"
jeffhao5d1ac922011-09-29 17:41:15 -0700120else
Elliott Hughes3bb81562011-10-21 18:52:59 -0700121 cmdline="cd /data; $INVOKE_WITH $OATEXEC ${DEX_DEBUG} -Xjnigreflimit:256 \
Brian Carlstrom47a0d5a2011-10-12 21:20:05 -0700122 -Ximage:/data/art-test/core.art \
123 -cp /data/art-test/$TEST_NAME.jar \
Elliott Hughes8cbc8bc2011-10-04 11:19:45 -0700124 Main"
125 #cmdline="cd /data; dalvikvm $DEX_VERIFY $DEX_OPTIMIZE $DEX_DEBUG \
Elliott Hughesbb1e8f02011-10-18 14:14:25 -0700126 # -cp test.jar -Xint:${INTERP} -ea Main"
Elliott Hughes8cbc8bc2011-10-04 11:19:45 -0700127 if [ "$DEV_MODE" = "y" ]; then
128 echo $cmdline "$@"
129 fi
jeffhao795d78f2011-09-30 18:34:35 -0700130
Elliott Hughes8cbc8bc2011-10-04 11:19:45 -0700131 adb shell $cmdline "$@"
jeffhao5d1ac922011-09-29 17:41:15 -0700132fi