< prev index next >

src/share/vm/classfile/verifier.hpp

Print this page

        

*** 49,59 **** * then the appropriate VerifyError or ClassFormatError will be thrown. * Otherwise, no exception is thrown and the return indicates the * error. */ static void log_end_verification(outputStream* st, const char* klassName, Symbol* exception_name, TRAPS); ! static bool verify(instanceKlassHandle klass, Mode mode, bool should_verify_class, TRAPS); // Return false if the class is loaded by the bootstrap loader, // or if defineClass was called requesting skipping verification // -Xverify:all/none override this value static bool should_verify_for(oop class_loader, bool should_verify_class); --- 49,59 ---- * then the appropriate VerifyError or ClassFormatError will be thrown. * Otherwise, no exception is thrown and the return indicates the * error. */ static void log_end_verification(outputStream* st, const char* klassName, Symbol* exception_name, TRAPS); ! static bool verify(InstanceKlass* klass, Mode mode, bool should_verify_class, TRAPS); // Return false if the class is loaded by the bootstrap loader, // or if defineClass was called requesting skipping verification // -Xverify:all/none override this value static bool should_verify_for(oop class_loader, bool should_verify_class);
*** 63,75 **** // Print output for class+resolve static void trace_class_resolution(Klass* resolve_class, InstanceKlass* verify_class); private: ! static bool is_eligible_for_verification(instanceKlassHandle klass, bool should_verify_class); static Symbol* inference_verify( ! instanceKlassHandle klass, char* msg, size_t msg_len, TRAPS); }; class RawBytecodeStream; class StackMapFrame; class StackMapTable; --- 63,75 ---- // Print output for class+resolve static void trace_class_resolution(Klass* resolve_class, InstanceKlass* verify_class); private: ! static bool is_eligible_for_verification(InstanceKlass* klass, bool should_verify_class); static Symbol* inference_verify( ! InstanceKlass* klass, char* msg, size_t msg_len, TRAPS); }; class RawBytecodeStream; class StackMapFrame; class StackMapTable;
*** 273,283 **** int index, const constantPoolHandle& cp, TRAPS) { return cp_index_to_type(cp->klass_ref_index_at(index), cp, THREAD); } bool is_protected_access( ! instanceKlassHandle this_class, Klass* target_class, Symbol* field_name, Symbol* field_sig, bool is_method); void verify_cp_index(u2 bci, const constantPoolHandle& cp, int index, TRAPS); void verify_cp_type(u2 bci, int index, const constantPoolHandle& cp, unsigned int types, TRAPS); --- 273,283 ---- int index, const constantPoolHandle& cp, TRAPS) { return cp_index_to_type(cp->klass_ref_index_at(index), cp, THREAD); } bool is_protected_access( ! InstanceKlass* this_class, Klass* target_class, Symbol* field_name, Symbol* field_sig, bool is_method); void verify_cp_index(u2 bci, const constantPoolHandle& cp, int index, TRAPS); void verify_cp_type(u2 bci, int index, const constantPoolHandle& cp, unsigned int types, TRAPS);
*** 342,356 **** void verify_fstore(u2 index, StackMapFrame* current_frame, TRAPS); void verify_dstore(u2 index, StackMapFrame* current_frame, TRAPS); void verify_astore(u2 index, StackMapFrame* current_frame, TRAPS); void verify_iinc (u2 index, StackMapFrame* current_frame, TRAPS); ! bool name_in_supers(Symbol* ref_name, instanceKlassHandle current); VerificationType object_type() const; ! instanceKlassHandle _klass; // the class being verified 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. --- 342,356 ---- void verify_fstore(u2 index, StackMapFrame* current_frame, TRAPS); void verify_dstore(u2 index, StackMapFrame* current_frame, TRAPS); void verify_astore(u2 index, StackMapFrame* current_frame, TRAPS); void verify_iinc (u2 index, StackMapFrame* current_frame, TRAPS); ! bool name_in_supers(Symbol* ref_name, InstanceKlass* current); VerificationType object_type() const; ! InstanceKlass* _klass; // the class being verified 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.
*** 360,387 **** // 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(); } ! bool is_same_or_direct_interface(instanceKlassHandle klass, VerificationType klass_type, VerificationType ref_class_type); public: enum { BYTECODE_OFFSET = 1, NEW_OFFSET = 2 }; // constructor ! ClassVerifier(instanceKlassHandle klass, TRAPS); // destructor ~ClassVerifier(); Thread* thread() { return _thread; } const methodHandle& method() { return _method; } ! instanceKlassHandle current_class() const { return _klass; } VerificationType current_type() const { return _this_type; } // Verifies the class. If a verify or class file format error occurs, // the '_exception_name' symbols will set to the exception name and // the message_buffer will be filled in with the exception message. --- 360,387 ---- // 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(); } ! bool is_same_or_direct_interface(InstanceKlass* klass, VerificationType klass_type, VerificationType ref_class_type); public: enum { BYTECODE_OFFSET = 1, NEW_OFFSET = 2 }; // constructor ! ClassVerifier(InstanceKlass* klass, TRAPS); // destructor ~ClassVerifier(); Thread* thread() { return _thread; } const methodHandle& method() { return _method; } ! InstanceKlass* current_class() const { return _klass; } VerificationType current_type() const { return _this_type; } // Verifies the class. If a verify or class file format error occurs, // the '_exception_name' symbols will set to the exception name and // the message_buffer will be filled in with the exception message.
< prev index next >