diff options
Diffstat (limited to 'src/share/vm/classfile/verifier.hpp')
-rw-r--r-- | src/share/vm/classfile/verifier.hpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/share/vm/classfile/verifier.hpp b/src/share/vm/classfile/verifier.hpp index f4a6ea4ee..59cd08559 100644 --- a/src/share/vm/classfile/verifier.hpp +++ b/src/share/vm/classfile/verifier.hpp @@ -158,6 +158,16 @@ class ClassVerifier : public StackObj { methodHandle _method; // current method being verified VerificationType _this_type; // the verification type of the current class + // Some recursive calls from the verifier to the name resolver + // can cause the current class to be re-verified and rewritten. + // If this happens, the original verification should not continue, + // because constant pool indexes will have changed. + // The rewriter is preceded by the verifier. If the verifier throws + // an error, rewriting is prevented. Also, rewriting always precedes + // bytecode execution or compilation. Thus, is_rewritten implies + // that a class has been verified and prepared for execution. + bool was_recursively_verified() { return _klass->is_rewritten(); } + public: enum { BYTECODE_OFFSET = 1, |