aboutsummaryrefslogtreecommitdiff
path: root/libjava/verify.cc
AgeCommit message (Collapse)AuthorFilesLines
2006-10-14java-insns.h (enum java_code): Add op_breakpoint.Keith Seitz1-1/+3
* include/java-insns.h (enum java_code): Add op_breakpoint. * include/java-interp.h (_Jv_InterpMethod): Declare breakpoint_insn. [INTERPRETER]: Declare _Jv_InterpMethod::bp_insn_slot. [!INTERPRETER]: Declare _Jv_InterpMethod::bp_insn_opcode. (install_break): Declare. * interpret.cc (breakpoint_insn): Define breakpoint insn. (compile): Add op_breakpoint to "can't happen" cases. [INTERPRETER] Initialize breakpoint insn if necessary. (install_break): New method. * interpret-run.cc: Add op_breakpoint to insn_targets. Add insn_breakpoint label. * verify.cc (branch_prepass): Add op_breakpoint to unrecognized opcodes section of switch statement. (verify_instructions_0): Likewise. From-SVN: r117734
2006-02-08link.cc (_Jv_Linker::print_class_loaded): Declare string constants as "const ↵Bryce McKinlay1-1/+1
char *". 2006-02-08 Bryce McKinlay <mckinlay@redhat.com> * link.cc (_Jv_Linker::print_class_loaded): Declare string constants as "const char *". * verify.cc (verify_fail): Likewise. * gnu/classpath/natSystemProperties.cc (file_encoding): Likewise. * interpret.cc (throw_internal_error, throw_class_format_error): Likewise. * gcj/javaprims.h (_Jv_hashUtf8String, _Jv_Utf8Const::space_needed, _Jv_Utf8Const::init, _Jv_makeUtf8Const): Likewise. * java/lang/Class.h (_Jv_InitPrimClass): Likewise. * include/jvm.h (_Jv_strLengthUtf8, _Jv_makeUtf8Const): Likewise. * defineclass.cc (throw_internal_error, throw_no_class_def_found_error, is_attribute_name): Likewise. * prims.cc (_Jv_strLengthUtf8, _Jv_hashUtf8String, _Jv_Utf8Const::init, _Jv_makeUtf8Const, _Jv_InitPrimClass): Likewise. From-SVN: r110767
2006-02-012006-02-01 Robert Schuster <robertschuster@fsfe.org>Robert Schuster1-8/+87
* link.cc: (_Jv_Linker::find_field_helper): Added checks. (_Jv_Linker::find_field): Use exception swallowing class resolution and added early return. (_Jv_ThrowNoClassDefFoundErrorTrampoline): New function. (_Jv_Linker::link_symbol_table): Use exception swallowing class resolution, added ffi_closure installation routine, use _Jv_ThrowNoClassDefFoundError for missing static method. (_Jv_Linker::ensure_class_linked): Added string check which does not trigger class resolution. * java/lang/natClassLoader.cc: (_Jv_FindClassNoException): New method. * java/lang/Class.h: (_Jv_FindClassNoException): New method declaration. * include/jvm.h: (_Jv_FindClassNoException): New method declaration. (_Jv_FindClassFromSignatureNoException): New method declaration. * prims.cc: (_Jv_FindClassFromSignatureNoException): New method. * gcj/javaprims.h: (_Jv_equalsUtf8Classname): New method declaration. (_Jv_isPrimitiveOrDerived): Dito. * prims.cc: (_Jv_equalsUtf8Classnames): New method. (_Jv_isPrimitiveOrDerived): New method. * verify.cc: (ref_intersection::equals): Use new classname comparison method. (type::compatible): Use new classname comparison method. Added check whether LHS' type is java.lang.Object . (type::resolve): Added new optional debug message and simplified if-expression. (type::to_array): Added codepath that generates an array type without resolving the element type. From-SVN: r110474
2005-09-15re PR libgcj/16032 (libgcj should reject class files with incorrect version ↵Tom Tromey1-4/+7
numbers) PR libgcj/16032: * interpret.cc (AVAL1U): Resolve pool entry when not direct threaded. (AVAL2U): Likewise. (compile): Handle 'ldc class' specially. (_Jv_InterpMethod::run): Added special 'ldc class' instruction. * verify.cc (check_constant): Handle 'ldc class' for 1.5 classes. * defineclass.cc (handleCodeAttribute): Set new field. (MAJOR_1_1, MINOR_1_1, MAJOR_1_2, MINOR_1_2, MAJOR_1_3, MINOR_1_3, MAJOR_1_4, MINOR_1_4, MAJOR_1_5, MINOR_1_5): New defines. (parse): Check version numbers. (_Jv_ClassReader::is_15): New field. (_Jv_ClassReader): Initialize it. * include/java-interp.h (_Jv_InterpMethod::is_15): New field. From-SVN: r104325
2005-07-08verify.cc (class _Jv_BytecodeVerifier): Don't check for abstract classes or ↵Colin Walters1-2/+2
interfaces here... 2005-07-06 Colin Walters <walters@verbum.org> * verify.cc (class _Jv_BytecodeVerifier) <op_new>: Don't check for abstract classes or interfaces here; JVM spec says it should throw an exception, so we'll do so later. * interpret.cc (run): Throw an InstantiationException for abstract classes and interfaces. From-SVN: r101788
2005-06-24verify-impl.c (verify_instructions_0): Correctly handle situation where PC ↵Tom Tromey1-2/+3
falls off end. gcc/java/: * verify-impl.c (verify_instructions_0): Correctly handle situation where PC falls off end. libjava/: * verify.cc (verify_instructions_0): Correctly handle situation where PC falls off end. From-SVN: r101299
2005-04-05jni.cc (_Jv_JNI_GetAnyFieldID): Throw ClassNotFoundException.Tom Tromey1-1/+6
* jni.cc (_Jv_JNI_GetAnyFieldID): Throw ClassNotFoundException. * java/lang/reflect/natMethod.cc (_Jv_GetTypesFromSignature): Rewrote to use _Jv_FindClassFromSignature. * verify.cc (resolve): throw NoClassDefFoundError. * link.cc (resolve_field): Throw NoClassDefFoundError. (find_field): Likewise. * prims.cc (_Jv_FindClassFromSignature): Removed recursion. Handle error cases. Added 'endp' argument. * include/jvm.h (_Jv_FindClassFromSignature): Updated prototype. From-SVN: r97660
2005-02-22re PR java/20056 ('verification failed: incompatible type on stack' with ↵Tom Tromey1-14/+35
--indirect-dispatch) PR java/20056: * verify.cc (type::EITHER): New constant. (check_field_constant): Use it. (type::compatible): Handle it. From-SVN: r95403
2005-02-19re PR java/20056 ('verification failed: incompatible type on stack' with ↵Tom Tromey1-4/+4
--indirect-dispatch) PR java/20056: * verify.cc (type::equals): Fixed test. * testsuite/libjava.lang/PR20056.out: New file. * testsuite/libjava.lang/PR20056.java: New file. From-SVN: r95266
2005-02-19re PR java/20056 ('verification failed: incompatible type on stack' with ↵Tom Tromey1-12/+37
--indirect-dispatch) PR java/20056: * include/jvm.h (_Jv_Linker::has_field_p): Declare. * link.cc (has_field_p): New function. * verify.cc (check_field_constant): Added 'putfield' argument. (verify_instructions_0): Updated. (type::equals): New method. From-SVN: r95259
2004-11-25* Merged gcj-abi-2-dev-branch to trunk.Tom Tromey1-1/+1
(Actual changes too large to list in the commit message; see ChangeLog.) From-SVN: r91270
2004-11-03verify.cc (state::check_no_uninitialized_objects): Removed.Tom Tromey1-34/+21
* verify.cc (state::check_no_uninitialized_objects): Removed. (push_jump): Updated. (push_exception_jump): Likewise. (handle_ret_insn): Likewise. (handle_jsr_insn): Likewise. From-SVN: r90040
2004-08-11javaprims.h (_Jv_Utf8Const): Change struct to a class, with private fields ↵Per Bothner1-28/+20
and access methods. * gcj/javaprims.h (_Jv_Utf8Const): Change struct to a class, with private fields and access methods. (_Jv_NewStringUTF, _Jv_hashUtf8String): New function declarations. * gcj/cni.h (_Jv_NewStringUTF): Move to javaprims.h. * prims.cc (_Jv_Utf8COnst::init): New method implementation. ( _Jv_makeUtf8Const): Rewrite using new constructors. (hashUtf8String): Rename to +_Jv_hashUtf8String and make non-static. * defineclass.cc: Use new _Utf8Const access/convenience methods. * jni.cc: Likewise. * resolve.cc: Likewise. * gcj/field.h: Likewise. * include/jvm.h: Likewise. * java/lang/Class.h: Likewise. * java/lang/natClass.cc: Likwise. * java/lang/natClassLoader.cc: Likewise * java/lang/reflect/natMethod.cc: Likewise * verify.cc: Likewise. (_Jv_BytecodeVerifier::make_utf8_const): Optimize. (~_Jv_BytecodeVerifier): Don't need second _Jv_Free call. From-SVN: r85854
2004-03-19* verify.cc: Undef PC.Rainer Orth1-0/+5
From-SVN: r79690
2004-02-01jvm.h (MAYBE_UNUSED): New macro tp mark probably unused arguments.Michael Koch1-1/+1
2004-02-01 Michael Koch <konqueror@gmx.de> * include/jvm.h (MAYBE_UNUSED): New macro tp mark probably unused arguments. * jni.cc (_Jv_LookupJNIMethod): Mark 'args_size' unused. * verify.cc (debug_print): Mark 'fmt' unused. From-SVN: r77079
2004-01-23re PR libgcj/13107 (Wrong verification error in gij: recursive subroutine call)Tom Tromey1-616/+340
PR libgcj/13107: * testsuite/libjava.lang/pr13107_2.xfail: New file. * testsuite/libjava.lang/pr13107_3.xfail: New file. * testsuite/libjava.lang/pr13107_3.java: New file. * testsuite/libjava.lang/pr13107_3.out: New file. * testsuite/libjava.lang/pr13107_2.java: New file. * testsuite/libjava.lang/pr13107_2.out: New file. * testsuite/libjava.lang/pr13107.java: New file. * testsuite/libjava.lang/pr13107.out: New file. * verify.cc (jsr_ptrs): Removed. (entry_points): Likewise. (struct subr_info): Likewise. (struct subr_entry_info): Likewise. (type_val::unused_by_subroutine_type): Likewise. (type::merge): Don't handle unused_by_subroutine_type. (type::print): Likewise. (state::flags): Removed. (state::subroutine): Likewise. (state::seen_subrs): Likewise. (state::NO_STACK): Likewise. (state::FLAG_CHANGED, state::FLAG_UNUSED): Likewise. (state): Updated all methods. (state::clean_subrs): Removed. (state::state): Removed `ret_semantics' flag. (state::copy): Likewise. (state::add_subr): Removed. (state::enter_subroutine): Likewise. (type::set_return_address): New method. (handle_jsr_insn): Set return address on the type. Always invalidate PC after call. (check_nonrecursive_call): Removed. (~_Jv_BytecodeVerifier): Updated. (branch_prepass): Removed special handling of jsr. (note_branch_target): Likewise. (get_subroutine): Removed. (state::merge): Don't merge subroutines and don't handle NO_STACK. Removed ret_semantics and jsr_semantics arguments. (state::note_variable): Removed. (state::is_unmerged_ret_state): Likewise. (state::print): Updated. (set_variable): Likewise. (merge_into): Renamed from push_jump_merge. Removed ret_semantics and jsr_semantics arguments. Updated for new reverification list. (pop_jump): Rewrote. (construct_primitive_array_type): Updated. (state::next): Removed. (INVALID_STATE): New define. (state::INVALID): Removed. (state::NO_NEXT): New value. (state::pc, state::next): New fields. (state::get_pc): New method. (next_verify_pc): Removed. (next_verify_state): New field. (verify_instructions_0): Always check for falling off end. (linked): New type. (linked_utf8): Removed. (states): Changed type. (type::state_mergeable_p): New method. (state::state_mergeable_p): Likewise. (handle_ret_insn): Removed most code. (state::reverify): New method. (add_new_state): Likewise. (state::set_pc): Likewise. From-SVN: r76395
2004-01-08re PR libgcj/13439 (gij VerifyError; works with JDK 1.4)Tom Tromey1-26/+107
PR libgcj/13439: * verify.cc (state::merge): Copy changed locals out of subroutine in NO_STACK case. (state::FLAG_CHANGED): New const. (state::FLAG_UNUSED): Likewise. (state::local_changed): Removed. Updated all users. (state::flags): New field. (state::merge): Added jsr_semantics argument, more logic. (push_jump_merge): Added jsr_semantics argument. (handle_jsr_insn): Set jsr_semantics on push_jump_merge when merging through the jsr instruction. From-SVN: r75533
2003-12-02verify.cc (state::clean_subrs): Clear seen_subrs.Jeff Sturm1-3/+3
* verify.cc (state::clean_subrs): Clear seen_subrs. (state::copy): Walk seen_subrs from copy, not `this'. Don't clear seen_subrs. From-SVN: r74152
2003-11-19re PR libgcj/13026 (libgcj verifier failure)Tom Tromey1-3/+4
PR libgcj/13026: * verify.cc (state::copy): Only set local_changed if we're in a subroutine. Correctly copy local variables which were modified by the subroutine. (push_jump_merge): Added more debugging output. From-SVN: r73722
2003-07-24For PR libgcj/7482:Tom Tromey1-232/+310
* verify.cc (ref_intersection): New class. (type_val): Removed unresolved_reference_type, uninitialized_unresolved_reference_type. (is_assignable_from_slow): Rewrote. (type::data): Removed. (type::klass): New field. (type::type): Added verifier argument. (type::resolve): Removed. (type::set_uninitialized): Updated for change to type_val. (type::set_initialized): Likewise. (type::isinitialized): Likewise. (type::print): Likewise. (construct_primitive_array_type): Likewise. (type::compatible): Updated for change to type_val and to use ref_intersection. (type::isarray): Updated to use ref_intersection. (type::isinterface): Likewise. (type::element_type): Likewise. (type::to_array): Likewise. (type::verify_dimensions): Rewrote. (type::merge): Likewise. (check_class_constant): Updated for type constructor change. (check_constant): Likewise. (check_field_constant): Likewise. (get_one_type): Likewise. (initialize_stack): Likewise. (verify_instructions_0): Likewise. (verify_instructions_0) [op_invokeinterface]: Removed special case. (isect_list): New field. (_Jv_BytecodeVerifier): Initialize it. (~_Jv_BytecodeVerifier): Destroy ref_intersection objects. From-SVN: r69751
2003-05-07* verify.cc: Reverted previous patch.Tom Tromey1-2/+60
From-SVN: r66548
2003-05-01re PR libgcj/10582 (array assignment fails in some situations)Tom Tromey1-60/+2
PR libgcj/10582: * verify.cc (_Jv_BytecodeVerifier::is_assignable_from_slow): Removed. (type::compatible): Use _Jv_IsAssignableFrom. * java/lang/natClass.cc (iindex_mutex_initialized): Now static. (_Jv_IsAssignableFrom): Work even when source or target class is not prepared. From-SVN: r66348
2003-04-11verify.cc (pop64): Removed.Tom Tromey1-11/+17
* verify.cc (pop64): Removed. (verify_instructions_0) <op_pop2>: Inline code. Don't throw exception if top-of-stack is narrow. (initialize_stack): Check to ensure that <init> is not static and <clinit> is. From-SVN: r65453
2003-03-03verify.cc (handle_jsr_insn): Don't fail if `jsr' appears at end of bytecode.Tom Tromey1-10/+15
* verify.cc (handle_jsr_insn): Don't fail if `jsr' appears at end of bytecode. (handle_ret_insn): Fail if returning to jsr that appears at end of bytecode. From-SVN: r63744
2003-02-16verify.cc (_Jv_BytecodeVerifier::pop_jump): Removed unused variable.Tom Tromey1-2/+0
* verify.cc (_Jv_BytecodeVerifier::pop_jump): Removed unused variable. From-SVN: r62980
2003-02-13verify.cc (state::seen_subrs): New field.Tom Tromey1-5/+58
* verify.cc (state::seen_subrs): New field. (state::state): Initialize it. (state::clean_subrs): New method. (state::~state): Call it. (state::copy): Copy subroutine list. (state::add_subr): New method. (state::merge): Only register a change if the current subroutine hasn't yet been noted. From-SVN: r62878
2002-12-28boehm.cc: Remove stray semicolon.Mark Mitchell1-28/+28
* boehm.cc: Remove stray semicolon. * interpret.cc: Likewise. * prims.cc: Likewise. * verify.cc (_Jv_BytecodeVerifier::verify_fail): Move definition earlier to ensure default arguments are processed. * gcj/array.h (JArray): Add forward declaration. (elements): Likewise. * gcj/javaprim.h: Remove stray semicolons. * include/bohm-gc.h: Likewise. * include/jni.h: Likewise. * include/jvm.h: Likewise. * java/lang/Class.h (_Jv_GetArrayClass): Declare _Jv_NewArrayClass. From-SVN: r60556
2002-12-05Fixed snafu caused when fixing previous snafu.Tom Tromey1-2/+2
From-SVN: r59846
2002-12-05Fixed ChangeLog patch snafuTom Tromey1-2/+2
From-SVN: r59844
2002-12-03natClassLoader.cc (_Jv_PrepareCompiledClass): Call _Jv_PushClass.Andrew Haley1-3/+3
2002-12-03 Andrew Haley <aph@redhat.com> * java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Call _Jv_PushClass. (_Jv_InitNewClassFields): Set protectionDomain and chain = NULL. (_Jv_PopClass): New. (_Jv_PushClass): New. * java/lang/natClass.cc (forName (jstring)): Use a StackTrace to discover the ClassLoader of our caller. (_Jv_CheckArrayStore): Don't check that a class is assignment compatible with Object. * java/lang/natVMTHrowable.cc: Delete. * gnu/gcj/runtime/StackTrace.java: New, partly copied from java.lang.VMThrowable. (StackTrace(), StackTrace(int)): New constructors. (classAt, methodAt, update, methodAtAddress): New methods. (map): New field. * java/lang/VMThrowable.java: Use StackTrace instead of natVMTHrowable. * java/lang/Class.h (getClassLoaderInternal): New. (class Class): Be friendly with _Jv_PopClass and _Jv_PushClass. Be friendly with gnu::gcj::runtime::StackTrace. (Object.chain): New field. * include/java-interp.h (class _Jv_InterpMethod): Be friendly with gnu::gcj::runtime::StackTrace. * prims.cc (_Jv_NewObjectArray): Use getClassLoaderInternal() instead of getClassLoader(). * verify.cc (class _Jv_BytecodeVerifier): Likewise. java::lang::VMThrowable. * Makefile.am (core_java_source_files): Add MethodRef.java, StackTrace.java. (nat_source_files): Remove natVMThrowable.cc; add natStackTrace.cc. * Makefile.in: Rebuild. 2002-12-03 Andrew Haley <aph@redhat.com> * class.c (make_class_data): New field, "chain". * decl.c (java_init_decl_processing): Likewise. From-SVN: r59769
2002-11-27verify.cc (pop_init_ref): New method.Tom Tromey1-26/+48
* verify.cc (pop_init_ref): New method. (verify_instructions_0) [op_iaload, op_laload, op_faload, op_daload, op_aaload, op_baload, op_caload, op_saload, op_iastore, op_lastore, op_fastore, op_dastore, op_aastore, op_bastore, op_castore, op_sastore, op_areturn, op_arraylength, op_checkcast, op_instanceof, op_monitorenter, op_monitorexit]: Use it. (verify_instructions_0) [op_invokevirtual, op_invokespecial, op_invokestatic, op_invokeinterface]: Use pop_init_ref. Don't let `this' argument be uninitialized. Don't let `null' be passed as `this' to construtor. From-SVN: r59558
2002-11-26* verify.cc (type::compatible): Backed out broken change.Tom Tromey1-5/+5
From-SVN: r59496
2002-11-26verify.cc (type::compatible): Check initialization status first.Tom Tromey1-6/+5
* verify.cc (type::compatible): Check initialization status first. * interpret.cc (run) [insn_invokespecial, invokespecial_resolved]: Don't use NULLCHECK. From-SVN: r59494
2002-06-24verify.cc (branch_prepass): Updated for change to exception handler type.Tom Tromey1-12/+12
* verify.cc (branch_prepass): Updated for change to exception handler type. (verify_instructions_0): Likewise. * defineclass.cc (handleCodeAttribute): Initialize `prepared'. (handleExceptionTableEntry): Updated for change to exception handler type. * java/lang/Class.h (Class): Removed _Jv_InterpMethodInvocation. * include/java-interp.h (_Jv_InterpMethodInvocation): Removed. (union _Jv_InterpPC): New. (class _Jv_InterpException): Changed types to _Jv_InterpPC. (class _Jv_InterpMethod): Added new `prepared' field. (class _Jv_InterpMethod): Added `compile' method. Removed `continue1' and `find_exception'. Changed arguments to `run'. * interpret.cc (union insn_slot): New. (find_exception): Removed. (run_normal): Removed most logic. (run_synch_object): Likewise; also, use JvSynchronize. (run_synch_class): Likewise. (run): Removed. (continue1): Renamed as `run'. Compile bytecode if required. Add new code to allow refinement of direct-threaded code at runtime. Handle exceptions. (SAVE_PC): Removed. (compile): New method. (SET_ONE, SET_INSN, SET_INT, SET_DATUM): New defines. (NULLARRAYCHECK): Don't use SAVE_PC. (pc_t): New typedef. (TAKE_GOTO, GET1S, GET1U, GET2U, AVAL1U, AVAL2U, AVAL2UP, SKIP_GOTO, GOTO_VAL, PCVAL, AMPAMP): New macros. From-SVN: r54968
2002-04-26verify.cc (construct_primitive_array_type): New case.Tom Tromey1-0/+61
* verify.cc (construct_primitive_array_type) [void_type]: New case. (branch_prepass): Added dummy entries for unused instruction values. (verify_instructions_0): Likewise. * interpret.cc (continue1): Comment fix. * include/java-insns.h (op_xxxunusedxxx1): Removed. * Makefile.in: Rebuilt. * Makefile.am: Added -Wswitch-enum. From-SVN: r52814
2002-03-10verify.cc (state::NO_STACK): New constant.Tom Tromey1-22/+53
* verify.cc (state::NO_STACK): New constant. (state::is_unmerged_ret_state): Handle case where stacktop is NO_STACK. (state::merge): Handle NO_STACK merges. (handle_jsr_insn): Invalidate PC, and use special NO_STACK state for instruction following jsr. (stacktop, stackdepth): Removed unused variables. (pop_jump): Ignore case where all remaining states are skipped. From-SVN: r50526
2002-02-20re PR libgcj/5696 (natClass.cc run through superclasses of target if they ↵Tom Tromey1-12/+12
exist while comparing variable types.) Fix for PR libgcj/5696: * verify.cc (is_assignable_from_slow): Never call _Jv_IsAssignableFrom. (verify_instructions_0): Added new debug statement. (state::print): Print information about whether local has changed. (state::merge): Don't call note_variable when merging locals. (state::set_exception): Removed old FIXME comment. From-SVN: r49886
2002-02-15re PR libgcj/5695 (verify.cc test that target is an object before running ↵Tom Tromey1-4/+26
down interfaces) Fix for PR libgcj/5695: * verify.cc (is_assignable_from_slow): Check to see if target is an Object before checking to see if source is an interface. (verify_instructions_0) [op_invokeinterface]: Handle case where we're making an interface call on Object. From-SVN: r49783
2002-02-14re PR libgcj/5670 (verify.cc not properly merging states)Todd Stock1-2/+14
2002-02-13 Todd Stock <toddastock@yahoo.com> Fix for PR libgcj/5670: * verify.cc (is_assignable_from_slow): If `source' is interface, recursively look for merge with `target'. From-SVN: r49769
2002-02-13re PR libgcj/5671 (verify.cc problem merging local variables)Todd Stock1-2/+7
2002-02-13 Todd Stock <toddastock@yahoo.com> Fix for PR libgcj/5671: * verify.cc (state::merge): Handle case where we're merging against an interface. From-SVN: r49735
2002-02-07verify.cc (require_array_type): If argument is a null array of references, ↵Tom Tromey1-2/+4
return null as the element type. * verify.cc (require_array_type): If argument is a null array of references, return null as the element type. From-SVN: r49561
2002-02-07verify.cc (verify_instructions_0): Actually push the duplicate of a wide type.Mark Wielaard1-0/+2
2002-02-06 Mark Wielaard <mark@klomp.org> * verify.cc (verify_instructions_0) [op_dup2]: Actually push the duplicate of a wide type. From-SVN: r49559
2002-02-06verify.cc (type::isnull): New method.Tom Tromey1-1/+10
* verify.cc (type::isnull): New method. (require_array_type): Handle case where array is null. (verify_instructions_0) [op_arraylength]: Likewise. From-SVN: r49555
2002-02-01verify.cc (state::enter_subroutine): New method.Tom Tromey1-10/+30
* verify.cc (state::enter_subroutine): New method. (handle_jsr_insn): Use it. (state::merge): When processing a `ret', correctly use subroutine's state to determine which local variables have changed. (push_exception_jump): Don't let stack overflow. From-SVN: r49388
2002-01-30verify.cc (handle_ret_insn): Check for subroutine merge here...Tom Tromey1-9/+72
* verify.cc (handle_ret_insn): Check for subroutine merge here... (state::merge): ... not here. (subr_entry_info): New structure. (entry_points): New field. (~_Jv_BytecodeVerifier): Correctly free jsr_ptrs. Free entry_points. From-SVN: r49344
2002-01-28verify.cc (class _Jv_BytecodeVerifier): `nargs' byte is number of words, not ↵Tom Tromey1-7/+16
number of arguments. * verify.cc (class _Jv_BytecodeVerifier) [op_invokeinterface]: `nargs' byte is number of words, not number of arguments. From-SVN: r49292
2002-01-28verify.cc (class _Jv_BytecodeVerifier): Removed `FIXME' comment and to-do list.Tom Tromey1-13/+14
* verify.cc (class _Jv_BytecodeVerifier): Removed `FIXME' comment and to-do list. (state::merge): Use current class' class loader. (state::print): Print subroutine. (state::merge): Don't look at subroutine of unmerged `ret'. From-SVN: r49274
2002-01-25verify.cc (verify_fail): Change from being a top-level function to e method ↵Per Bothner1-106/+107
of _Jv_BytecodeVerifier. * verify.cc (verify_fail): Change from being a top-level function to e method of _Jv_BytecodeVerifier. Emit current method name. Pass the current verifier to type: and state: methods as needed, for better error messages, and for resolve. (resolve): Pass current class's loader for Class.forName and _Jv_FindClassFromSignature, rather than using the default loader. (various type: and state: methods): Take _Jv_BytecodeVerifier* arg. (get_type_val_for_signature): Make non-static. (various methods): Pass start_PC implicitly, not explicitly. From-SVN: r49240
2002-01-25Updated copyright dateTom Tromey1-1/+1
From-SVN: r49207
2002-01-24verify.cc (is_assignable_from_slow): If source is an interface, we must also ↵Per Bothner1-1/+3
check the superclass. * verify.cc (is_assignable_from_slow): If source is an interface, we must also check the superclass. From-SVN: r49189