defineclass.cc (handleMethodsEnd): Invoke verifier here...
authorTom Tromey <tromey@redhat.com>
Tue, 4 Dec 2001 06:37:53 +0000 (06:37 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Tue, 4 Dec 2001 06:37:53 +0000 (06:37 +0000)
* defineclass.cc (handleMethodsEnd): Invoke verifier here...
(handleCodeAttribute): ... not here.
* verify.cc (_Jv_BytecodeVerifier::state::state): Use `copy', not
structure assignment.

From-SVN: r47591

libjava/ChangeLog
libjava/defineclass.cc
libjava/verify.cc

index 0efcdc8..fbfead8 100644 (file)
@@ -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
index 3a6eaba..31a4662 100644 (file)
@@ -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)
index 3b042e9..d4017eb 100644 (file)
@@ -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;
     }