OSDN Git Service

Collect verifier dependencies
authorDavid Brazdil <dbrazdil@google.com>
Tue, 6 Sep 2016 13:04:48 +0000 (14:04 +0100)
committerDavid Brazdil <dbrazdil@google.com>
Fri, 16 Sep 2016 09:08:18 +0000 (10:08 +0100)
commitca3c8c33501bf199d6fd0a5db30a27d8e010cb23
tree12a6c3a4266bd17c6b9fe7066fd0b25cb8d9b2d6
parent0764877e21f1230e718923d5b84b048cd4346afa
Collect verifier dependencies

MethodVerifier tests whether a DEX method is valid w.r.t. the classes
in class path. Since the APK does not change across OTA updates, it
is not necessary to analyze the bytecode again with MethodVerifier,
as long as its dependencies on the class path (which may have changed)
are satisfied.

This patch introduces VerifierDeps, a class path dependency collector,
and adds hooks into MethodVerifier where classes/methods/fields are
resolved and where assignability of types is tested.

Test: m test-art-host-gtest-verifier_deps_test
Bug: 30937355
Change-Id: Iee0b321d772a5c7d1cb471aaa6e13918310b7e2f
34 files changed:
build/Android.gtest.mk
compiler/dex/quick_compiler_callbacks.h
compiler/dex/verified_method.cc
dex2oat/dex2oat.cc
runtime/Android.bp
runtime/base/mutex.cc
runtime/base/mutex.h
runtime/compiler_callbacks.h
runtime/noop_compiler_callbacks.h
runtime/utils.cc
runtime/verifier/method_resolution_kind.h [new file with mode: 0644]
runtime/verifier/method_verifier.cc
runtime/verifier/method_verifier.h
runtime/verifier/reg_type-inl.h
runtime/verifier/reg_type.cc
runtime/verifier/reg_type.h
runtime/verifier/reg_type_cache.cc
runtime/verifier/reg_type_cache.h
runtime/verifier/reg_type_test.cc
runtime/verifier/register_line-inl.h
runtime/verifier/register_line.cc
runtime/verifier/verifier_deps.cc [new file with mode: 0644]
runtime/verifier/verifier_deps.h [new file with mode: 0644]
runtime/verifier/verifier_deps_test.cc [new file with mode: 0644]
test/VerifierDeps/Main.smali [new file with mode: 0644]
test/VerifierDeps/MyDOMResult.smali [new file with mode: 0644]
test/VerifierDeps/MyDocument.smali [new file with mode: 0644]
test/VerifierDeps/MyErroneousTimeZone.smali [new file with mode: 0644]
test/VerifierDeps/MyResult.smali [new file with mode: 0644]
test/VerifierDeps/MySSLSocket.smali [new file with mode: 0644]
test/VerifierDeps/MySimpleTimeZone.smali [new file with mode: 0644]
test/VerifierDeps/MySocketTimeoutException.smali [new file with mode: 0644]
test/VerifierDeps/MyThread.smali [new file with mode: 0644]
test/VerifierDeps/MyThreadSet.smali [new file with mode: 0644]