aboutsummaryrefslogtreecommitdiff
path: root/vm/compiler/codegen
diff options
context:
space:
mode:
authorAndy McFadden <fadden@android.com>2009-05-08 16:50:17 -0700
committerAndy McFadden <fadden@android.com>2009-05-18 07:34:57 -0700
commitb51ea11c70602918c42764bfafe92a997d3b1803 (patch)
tree76e78f3d21cf0af1c2f6a822998752f0508d99d4 /vm/compiler/codegen
parentd575a886761b5ddc56819cc29d3778fc5116ea88 (diff)
Defer reporting of certain verifier failures.
The verifier currently reports all failures immediately. Certain failures, such as the failure to resolve a method, or the determination that access to a field is not allowed, are supposed to deferred until the first time that executing code does something that could cause the resolution. With this change, several kinds of verification failures are deferred. This is done by making a writable copy of the bytecode and replacing the failing instruction with an "always throw" opcode. Gory details: - Added throw-verification-error instruction. Implemented in "portable" and ARM interpreters. x86 uses portable form through stub. - Added a function that creates a copy of a DexCode area and makes the bytecodes writable. - Added code that replaces a single instruction with an "always throw". - Replaced runtime check for abstract/interface in new-instance with a check at verification time. - Added a test to exercise the deferred error mechanism. - Minor cleanups (replaced tab, bad valgrind command, ...).
Diffstat (limited to 'vm/compiler/codegen')
0 files changed, 0 insertions, 0 deletions