Merge "ART: Use platform_include header library"
diff --git a/.gitignore b/.gitignore
index 4e806c6..803c297 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,6 @@
JIT_ART
**/__pycache__/**
+**/.idea
+**/*.iml
+**/*.pyc
+**/*.swn
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc
index 037e458..7ea75eb 100644
--- a/compiler/driver/compiler_driver.cc
+++ b/compiler/driver/compiler_driver.cc
@@ -2110,8 +2110,24 @@
// invokes once verifier support is fully implemented.
if (manager_->GetCompiler()->GetCompilerOptions().IsBootImage() &&
!android::base::StartsWith(descriptor, "Ljava/lang/invoke/")) {
- DCHECK(klass->IsVerified()) << "Boot classpath class " << klass->PrettyClass()
- << " failed to fully verify: state= " << klass->GetStatus();
+ if (!klass->IsVerified()) {
+ // Re-run verification to get all failure messages if it soft-failed.
+ if (!klass->IsErroneous()) {
+ gLogVerbosity.verifier = true;
+ // Note: We can't call ClassLinker::VerifyClass, as it will elide the second
+ // verification.
+ Runtime* runtime = Runtime::Current();
+ std::string v_error;
+ verifier::MethodVerifier::VerifyClass(soa.Self(),
+ klass.Get(),
+ runtime->GetCompilerCallbacks(),
+ runtime->IsAotCompiler(),
+ verifier::HardFailLogMode::kLogInternalFatal,
+ &v_error);
+ }
+ LOG(FATAL) << "Boot classpath class " << klass->PrettyClass()
+ << " failed to fully verify: state= " << klass->GetStatus();
+ }
}
if (klass->IsVerified()) {
DCHECK_EQ(failure_kind, verifier::FailureKind::kNoFailure);
diff --git a/tools/run-jdwp-tests.sh b/tools/run-jdwp-tests.sh
index 355646b..0b2d654 100755
--- a/tools/run-jdwp-tests.sh
+++ b/tools/run-jdwp-tests.sh
@@ -28,24 +28,10 @@
using_jack=$(get_build_var ANDROID_COMPILE_WITH_JACK)
-function jlib_suffix {
- local str=$1
- local suffix="jar"
- if [[ $using_jack == "true" ]]; then
- suffix="jack"
- fi
- echo "$str.$suffix"
-}
+java_lib_location="${ANDROID_HOST_OUT}/../common/obj/JAVA_LIBRARIES"
+make_target_name="apache-harmony-jdwp-tests-hostdex"
-# Jar containing all the tests.
-test_jar=$(jlib_suffix "${ANDROID_HOST_OUT}/../common/obj/JAVA_LIBRARIES/apache-harmony-jdwp-tests-hostdex_intermediates/classes")
-
-if [ ! -f $test_jar ]; then
- echo "Before running, you must build jdwp tests and vogar:" \
- "make apache-harmony-jdwp-tests-hostdex vogar"
- exit 1
-fi
-
+vm_args=""
art="/data/local/tmp/system/bin/art"
art_debugee="sh /data/local/tmp/system/bin/art"
args=$@
@@ -55,13 +41,14 @@
# image.
vm_command="--vm-command=$art"
image_compiler_option=""
+plugin=""
debug="no"
verbose="no"
image="-Ximage:/data/art-test/core.art"
vm_args=""
# By default, we run the whole JDWP test suite.
test="org.apache.harmony.jpda.tests.share.AllTests"
-host="no"
+mode="target"
# Use JIT compiling by default.
use_jit=true
variant_cmdline_parameter="--variant=X32"
@@ -74,7 +61,7 @@
while true; do
if [[ "$1" == "--mode=host" ]]; then
- host="yes"
+ mode="host"
# Specify bash explicitly since the art script cannot, since it has to run on the device
# with mksh.
art="bash ${OUT_DIR-out}/host/linux-x86/bin/art"
@@ -86,6 +73,22 @@
# Vogar knows which VM to use on host.
vm_command=""
shift
+ elif [[ "$1" == "--mode=jvm" ]]; then
+ mode="ri"
+ make_target_name="apache-harmony-jdwp-tests-host"
+ art="$(which java)"
+ art_debugee="$(which java)"
+ # No need for extra args.
+ debuggee_args=""
+ # No image. On the RI.
+ image=""
+ # We do not need a device directory on RI.
+ device_dir=""
+ # Vogar knows which VM to use on RI.
+ vm_command=""
+ # We don't care about jit with the RI
+ use_jit=false
+ shift
elif [[ $1 == -Ximage:* ]]; then
image="$1"
shift
@@ -112,18 +115,65 @@
# Remove the test from the arguments.
args=${args/$1}
shift
+ elif [[ "$1" == "--jdwp-path" ]]; then
+ # Remove the --jdwp-path from the arguments.
+ args=${args/$1}
+ shift
+ vm_args="${vm_args} --vm-arg -Djdpa.settings.debuggeeAgentArgument=\"-agentpath:\""
+ vm_args="${vm_args} --vm-arg -Djdpa.settings.debuggeeAgentName=\"$1\""
+ # Remove the path from the arguments.
+ args=${args/$1}
+ shift
elif [[ "$1" == "" ]]; then
break
elif [[ $1 == --variant=* ]]; then
variant_cmdline_parameter=$1
shift
+ elif [[ $1 == -Xplugin:* ]]; then
+ plugin="$1"
+ args=${args/$1}
+ shift
else
shift
fi
done
-# Make sure the debuggee doesn't clean up what the debugger has generated.
-art_debugee="$art_debugee --no-clean"
+if [[ $mode == "ri" ]]; then
+ using_jack="false"
+ if [[ "x$image" != "x" ]]; then
+ echo "Cannot use -Ximage: with --mode=jvm"
+ exit 1
+ elif [[ $debug == "yes" ]]; then
+ echo "Cannot use --debug with --mode=jvm"
+ exit 1
+ fi
+else
+ vm_args="$vm_args --vm-arg -Xcompiler-option --vm-arg --debuggable"
+ # Make sure the debuggee doesn't clean up what the debugger has generated.
+ art_debugee="$art_debugee --no-clean"
+fi
+
+function jlib_name {
+ local path=$1
+ local str="classes"
+ local suffix="jar"
+ if [[ $mode == "ri" ]]; then
+ suffix="jar"
+ str="javalib"
+ elif [[ $using_jack == "true" ]]; then
+ suffix="jack"
+ fi
+ echo "$path/$str.$suffix"
+}
+
+# Jar containing all the tests.
+test_jar=$(jlib_name "${java_lib_location}/${make_target_name}_intermediates")
+
+if [[ ! -f $test_jar ]]; then
+ echo "Before running, you must build jdwp tests and vogar:" \
+ "make ${make_target_name} vogar"
+ exit 1
+fi
# For the host:
#
@@ -133,7 +183,7 @@
#
# Note: this isn't necessary for the device as the BOOTCLASSPATH environment variable is set there
# and used as a fallback.
-if [[ $host == "yes" ]]; then
+if [[ $mode == "host" ]]; then
variant=${variant_cmdline_parameter:10}
if [[ $variant == "x32" || $variant == "X32" ]]; then
art_debugee="$art_debugee --32"
@@ -146,14 +196,23 @@
fi
if [[ "$image" != "" ]]; then
- vm_args="--vm-arg $image"
+ vm_args="$vm_args --vm-arg $image"
fi
+
+if [[ "$plugin" != "" ]]; then
+ vm_args="$vm_args --vm-arg $plugin"
+fi
+
if $use_jit; then
vm_args="$vm_args --vm-arg -Xcompiler-option --vm-arg --compiler-filter=quicken"
debuggee_args="$debuggee_args -Xcompiler-option --compiler-filter=quicken"
fi
-vm_args="$vm_args --vm-arg -Xusejit:$use_jit"
-debuggee_args="$debuggee_args -Xusejit:$use_jit"
+
+if [[ $mode != "ri" ]]; then
+ vm_args="$vm_args --vm-arg -Xusejit:$use_jit"
+ debuggee_args="$debuggee_args -Xusejit:$use_jit"
+fi
+
if [[ $debug == "yes" ]]; then
art="$art -d"
art_debugee="$art_debugee -d"
@@ -182,10 +241,9 @@
--vm-arg -Djpda.settings.timeout=$jdwp_test_timeout \
--vm-arg -Djpda.settings.waitingTime=$jdwp_test_timeout \
--vm-arg -Djpda.settings.transportAddress=127.0.0.1:55107 \
- --vm-arg -Djpda.settings.debuggeeJavaPath="$art_debugee $image $debuggee_args" \
+ --vm-arg -Djpda.settings.debuggeeJavaPath="$art_debugee $plugin $image $debuggee_args" \
--classpath "$test_jar" \
$toolchain_args \
- --vm-arg -Xcompiler-option --vm-arg --debuggable \
$test
vogar_exit_status=$?