mirror of
https://github.com/gcc-mirror/gcc.git
synced 2026-05-06 14:59:39 +02:00
resolve.cc (_Jv_PrepareClass): Verify method here...
* resolve.cc (_Jv_PrepareClass): Verify method here... * defineclass.cc (handleMethodsEnd): ... not here. * verify.cc (_Jv_BytecodeVerifier::initialize_stack): New method. (_Jv_BytecodeVerifier::verify_instructions_0) [op_return]: Ensure there are no uninitialized objects. (_Jv_BytecodeVerifier::state::this_type): New field. (_Jv_BytecodeVerifier::state::state): Initialize this_type. (_Jv_BytecodeVerifier::state::copy): Copy this_type. (_Jv_BytecodeVerifier::state::merge): Merge this_type. (_Jv_BytecodeVerifier::state::check_no_uninitialized_objects): Handle this_type. (_Jv_BytecodeVerifier::state::check_this_initialized): New method. (_Jv_BytecodeVerifier::state::set_initialized): Handle this_type. (_Jv_BytecodeVerifier::state::set_this_type): New method. (_Jv_BytecodeVerifier::verify_instructions_0) [op_putfield]: Allow assignment to fields of `this' before another initializer is run. From-SVN: r47826
This commit is contained in:
@@ -940,7 +940,7 @@ _Jv_ClassReader::handleClassBegin
|
||||
pool_data[super_class].clazz = the_super;
|
||||
pool_tags[super_class] = JV_CONSTANT_ResolvedClass;
|
||||
}
|
||||
|
||||
|
||||
// now we've come past the circularity problem, we can
|
||||
// now say that we're loading...
|
||||
|
||||
@@ -1315,15 +1315,6 @@ void _Jv_ClassReader::handleMethodsEnd ()
|
||||
{
|
||||
if (def->interpreted_methods[i] == 0)
|
||||
throw_class_format_error ("method with no code");
|
||||
|
||||
if (verify)
|
||||
{
|
||||
_Jv_InterpMethod *m;
|
||||
m = (reinterpret_cast<_Jv_InterpMethod *>
|
||||
(def->interpreted_methods[i]));
|
||||
// FIXME: enable once verifier is more fully tested.
|
||||
// _Jv_VerifyMethod (m);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user