17dc44a1c9a37d528f080eb51739da80696bb1f05buzbee#!/bin/sh 27dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# 37dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# Run the code in test.jar using the host-mode virtual machine. The jar should 47dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# contain a top-level class named Main to run. 57dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# 67dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# Options: 77dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# --quiet -- don't chatter 87dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# --fast -- use the fast interpreter (the default) 97dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# --jit -- use the jit 107dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# --portable -- use the portable interpreter 117dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# --debug -- wait for debugger to attach 127dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# --valgrind -- use valgrind 137dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# --no-verify -- turn off verification (on by default) 147dc44a1c9a37d528f080eb51739da80696bb1f05buzbee# --no-optimize -- turn off optimization (on by default) 157dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 167dc44a1c9a37d528f080eb51739da80696bb1f05buzbeemsg() { 177dc44a1c9a37d528f080eb51739da80696bb1f05buzbee if [ "$QUIET" = "n" ]; then 187dc44a1c9a37d528f080eb51739da80696bb1f05buzbee echo "$@" 197dc44a1c9a37d528f080eb51739da80696bb1f05buzbee fi 207dc44a1c9a37d528f080eb51739da80696bb1f05buzbee} 217dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 227dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeINTERP="" 237dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeDEBUG="n" 247dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeGDB="n" 257dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeVERIFY="y" 267dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeOPTIMIZE="y" 277dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeVALGRIND="n" 287dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeDEV_MODE="n" 297dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeQUIET="n" 307dc44a1c9a37d528f080eb51739da80696bb1f05buzbeePRECISE="y" 317dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 327dc44a1c9a37d528f080eb51739da80696bb1f05buzbeewhile true; do 337dc44a1c9a37d528f080eb51739da80696bb1f05buzbee if [ "x$1" = "x--quiet" ]; then 347dc44a1c9a37d528f080eb51739da80696bb1f05buzbee QUIET="y" 357dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 367dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--jit" ]; then 377dc44a1c9a37d528f080eb51739da80696bb1f05buzbee INTERP="jit" 387dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Using jit" 397dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 407dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--fast" ]; then 417dc44a1c9a37d528f080eb51739da80696bb1f05buzbee INTERP="fast" 427dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Using fast interpreter" 437dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 447dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--portable" ]; then 457dc44a1c9a37d528f080eb51739da80696bb1f05buzbee INTERP="portable" 467dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Using portable interpreter" 477dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 487dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--debug" ]; then 497dc44a1c9a37d528f080eb51739da80696bb1f05buzbee DEBUG="y" 507dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 517dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--gdb" ]; then 527dc44a1c9a37d528f080eb51739da80696bb1f05buzbee GDB="y" 537dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 547dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--valgrind" ]; then 557dc44a1c9a37d528f080eb51739da80696bb1f05buzbee VALGRIND="y" 567dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 577dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--dev" ]; then 587dc44a1c9a37d528f080eb51739da80696bb1f05buzbee DEV_MODE="y" 597dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 607dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--no-verify" ]; then 617dc44a1c9a37d528f080eb51739da80696bb1f05buzbee VERIFY="n" 627dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 637dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--no-optimize" ]; then 647dc44a1c9a37d528f080eb51739da80696bb1f05buzbee OPTIMIZE="n" 657dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 667dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--no-precise" ]; then 677dc44a1c9a37d528f080eb51739da80696bb1f05buzbee PRECISE="n" 687dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 697dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif [ "x$1" = "x--" ]; then 707dc44a1c9a37d528f080eb51739da80696bb1f05buzbee shift 717dc44a1c9a37d528f080eb51739da80696bb1f05buzbee break 727dc44a1c9a37d528f080eb51739da80696bb1f05buzbee elif expr "x$1" : "x--" >/dev/null 2>&1; then 737dc44a1c9a37d528f080eb51739da80696bb1f05buzbee echo "unknown option: $1" 1>&2 747dc44a1c9a37d528f080eb51739da80696bb1f05buzbee exit 1 757dc44a1c9a37d528f080eb51739da80696bb1f05buzbee else 767dc44a1c9a37d528f080eb51739da80696bb1f05buzbee break 777dc44a1c9a37d528f080eb51739da80696bb1f05buzbee fi 787dc44a1c9a37d528f080eb51739da80696bb1f05buzbeedone 797dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 807dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeif [ "x$INTERP" = "x" ]; then 810c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen INTERP="jit" 820c2dc522d0e120f346cf0a40c8cf0c93346131c2Dong-Yuan Chen msg "Using jit by default" 837dc44a1c9a37d528f080eb51739da80696bb1f05buzbeefi 847dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 857dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeif [ "$OPTIMIZE" = "y" ]; then 867dc44a1c9a37d528f080eb51739da80696bb1f05buzbee if [ "$VERIFY" = "y" ]; then 877dc44a1c9a37d528f080eb51739da80696bb1f05buzbee DEX_OPTIMIZE="-Xdexopt:verified" 887dc44a1c9a37d528f080eb51739da80696bb1f05buzbee else 897dc44a1c9a37d528f080eb51739da80696bb1f05buzbee DEX_OPTIMIZE="-Xdexopt:all" 907dc44a1c9a37d528f080eb51739da80696bb1f05buzbee fi 917dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Performing optimizations" 927dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeelse 937dc44a1c9a37d528f080eb51739da80696bb1f05buzbee DEX_OPTIMIZE="-Xdexopt:none" 947dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Skipping optimizations" 957dc44a1c9a37d528f080eb51739da80696bb1f05buzbeefi 967dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 977dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeif [ "$VERIFY" = "y" ]; then 987dc44a1c9a37d528f080eb51739da80696bb1f05buzbee DEX_VERIFY="" 997dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Performing verification" 1007dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeelse 1017dc44a1c9a37d528f080eb51739da80696bb1f05buzbee DEX_VERIFY="-Xverify:none" 1027dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Skipping verification" 1037dc44a1c9a37d528f080eb51739da80696bb1f05buzbeefi 1047dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 1057dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeif [ "$VALGRIND" = "y" ]; then 1067dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Running with valgrind" 1077dc44a1c9a37d528f080eb51739da80696bb1f05buzbee valgrind_cmd="valgrind" 1087dc44a1c9a37d528f080eb51739da80696bb1f05buzbee #valgrind_cmd="valgrind --leak-check=full" 1097dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeelse 1107dc44a1c9a37d528f080eb51739da80696bb1f05buzbee valgrind_cmd="" 1117dc44a1c9a37d528f080eb51739da80696bb1f05buzbeefi 1127dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 1137dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeif [ "$PRECISE" = "y" ]; then 1147dc44a1c9a37d528f080eb51739da80696bb1f05buzbee GC_OPTS="-Xgc:precise -Xgenregmap" 1157dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeelse 1167dc44a1c9a37d528f080eb51739da80696bb1f05buzbee GC_OPTS="-Xgc:noprecise" 1177dc44a1c9a37d528f080eb51739da80696bb1f05buzbeefi 1187dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 1197dc44a1c9a37d528f080eb51739da80696bb1f05buzbeemsg "------------------------------" 1207dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 1217dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeHOSTBASE="${ANDROID_BUILD_TOP}/out/host" 1227dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeBASE="$OUT" # from build environment 1237dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeDATA_DIR=/tmp 1247dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeDEBUG_OPTS="-Xcheck:jni -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n" 1257dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 126719e14a06a328597b773fe347ca4ffb962716da5Carl Shapiroif [ ! -d $DATA_DIR/dalvik-cache ]; then 127719e14a06a328597b773fe347ca4ffb962716da5Carl Shapiro mkdir -p $DATA_DIR/dalvik-cache 128719e14a06a328597b773fe347ca4ffb962716da5Carl Shapiro [[ $? -ne 0 ]] && exit 129719e14a06a328597b773fe347ca4ffb962716da5Carl Shapirofi 130719e14a06a328597b773fe347ca4ffb962716da5Carl Shapiro 1317dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeexport ANDROID_PRINTF_LOG=brief 1327dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeif [ "$DEV_MODE" = "y" ]; then 1337dc44a1c9a37d528f080eb51739da80696bb1f05buzbee export ANDROID_LOG_TAGS='*:d' 1347dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeelse 1357dc44a1c9a37d528f080eb51739da80696bb1f05buzbee export ANDROID_LOG_TAGS='*:s' 1367dc44a1c9a37d528f080eb51739da80696bb1f05buzbeefi 1377dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeexport ANDROID_DATA="$DATA_DIR" 1387dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeexport ANDROID_ROOT="${HOSTBASE}/linux-x86" 1397dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeexport LD_LIBRARY_PATH="${ANDROID_ROOT}/lib" 1407dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeexport DYLD_LIBRARY_PATH="${ANDROID_ROOT}/lib" 1417dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 1427dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeexe="${ANDROID_ROOT}/bin/dalvikvm" 1437dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeframework="${BASE}/system/framework" 1445dedc95f562c09c29657ddf340af499af7c65abdElliott Hughesbpath="${framework}/core.jar:${framework}/conscrypt.jar:${framework}/ext.jar:${framework}/framework.jar" 1457dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 1467dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeif [ "$DEBUG" = "y" ]; then 1477dc44a1c9a37d528f080eb51739da80696bb1f05buzbee PORT=8000 1487dc44a1c9a37d528f080eb51739da80696bb1f05buzbee msg "Waiting for debugger to connect on localhost:$PORT" 1497dc44a1c9a37d528f080eb51739da80696bb1f05buzbee DEX_DEBUG="-agentlib:jdwp=transport=dt_socket,addres=$PORT,server=y,suspend=y" 1507dc44a1c9a37d528f080eb51739da80696bb1f05buzbeefi 1517dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 1527dc44a1c9a37d528f080eb51739da80696bb1f05buzbeeif [ "$GDB" = "y" ]; then 1537dc44a1c9a37d528f080eb51739da80696bb1f05buzbee gdb=gdb 1547dc44a1c9a37d528f080eb51739da80696bb1f05buzbee gdbargs="--args $exe" 1557dc44a1c9a37d528f080eb51739da80696bb1f05buzbeefi 1567dc44a1c9a37d528f080eb51739da80696bb1f05buzbee 1577dc44a1c9a37d528f080eb51739da80696bb1f05buzbee$valgrind_cmd $gdb $exe $gdbargs "-Xbootclasspath:${bpath}" \ 1587dc44a1c9a37d528f080eb51739da80696bb1f05buzbee $DEX_VERIFY $DEX_OPTIMIZE $DEX_DEBUG $GC_OPTS "-Xint:${INTERP}" -ea \ 1597dc44a1c9a37d528f080eb51739da80696bb1f05buzbee -cp test.jar Main "$@" 160