summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog7
-rw-r--r--libjava/defineclass.cc18
-rw-r--r--libjava/verify.cc4
3 files changed, 20 insertions, 9 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 0efcdc807bb..fbfead832ff 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,10 @@
+2001-12-03 Tom Tromey <tromey@redhat.com>
+
+ * defineclass.cc (handleMethodsEnd): Invoke verifier here...
+ (handleCodeAttribute): ... not here.
+ * verify.cc (_Jv_BytecodeVerifier::state::state): Use `copy', not
+ structure assignment.
+
2001-12-02 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* Makefile.am (nat_files, x_nat_files): Make sure the dependencies
diff --git a/libjava/defineclass.cc b/libjava/defineclass.cc
index 3a6eaba9227..31a46625320 100644
--- a/libjava/defineclass.cc
+++ b/libjava/defineclass.cc
@@ -500,10 +500,10 @@ void _Jv_ClassReader::read_methods ()
check_tag (name_index, JV_CONSTANT_Utf8);
prepare_pool_entry (descriptor_index, JV_CONSTANT_Utf8);
-
+
handleMethod (i, access_flags, name_index,
descriptor_index);
-
+
for (int j = 0; j < attributes_count; j++)
{
read_one_method_attribute (i);
@@ -1282,10 +1282,6 @@ void _Jv_ClassReader::handleCodeAttribute
code_length);
def->interpreted_methods[method_index] = method;
-
- // FIXME: Shouldn't this be done after loading completes?
-// if (verify)
-// _Jv_VerifyMethod (method);
}
void _Jv_ClassReader::handleExceptionTableEntry
@@ -1332,9 +1328,17 @@ 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);
+ }
}
}
-
}
void _Jv_ClassReader::throw_class_format_error (char *msg)
diff --git a/libjava/verify.cc b/libjava/verify.cc
index 3b042e9963f..d4017eb7765 100644
--- a/libjava/verify.cc
+++ b/libjava/verify.cc
@@ -697,12 +697,12 @@ private:
subroutine = 0;
}
- state (const state *copy, int max_stack, int max_locals)
+ state (const state *orig, int max_stack, int max_locals)
{
stack = new type[max_stack];
locals = new type[max_locals];
local_changed = (bool *) _Jv_Malloc (sizeof (bool) * max_locals);
- *this = *copy;
+ copy (orig, max_stack, max_locals);
next = INVALID;
}