You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by gs...@apache.org on 2006/12/11 13:27:37 UTC

svn commit: r485644 [3/3] - in /harmony/enhanced/drlvm/trunk/vm: interpreter/src/ vmcore/include/ vmcore/src/class_support/ vmcore/src/exception/ vmcore/src/jit/ vmcore/src/jvmti/ vmcore/src/util/ia32/base/

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Prepare.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Prepare.cpp?view=diff&rev=485644&r1=485643&r2=485644
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Prepare.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Prepare.cpp Mon Dec 11 04:27:35 2006
@@ -630,7 +630,7 @@
                 fake_method->_access_flags = (ACC_PUBLIC | ACC_ABSTRACT);
                 // Setting its "_intf_method_for_fake_method" field marks the method as being fake.
                 fake_method->_intf_method_for_fake_method = intf_method;
-                fake_method->_arguments_size = intf_method->_arguments_size;
+                fake_method->_arguments_slot_num = intf_method->_arguments_slot_num;
                 // The rest of the method's fields were zero'd above 
             }
         }

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/method.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/method.cpp?view=diff&rev=485644&r1=485643&r2=485644
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/method.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/method.cpp Mon Dec 11 04:27:35 2006
@@ -201,14 +201,13 @@
 } //Method::get_target_exception_handler_info
 
 
-void Method::calculate_arguments_size()
+void Method::calculate_arguments_slot_num() 
 {
-    // Use this old scheme until we can use the new JIT interface's methods
-    // to inspect the types of each method argument. This requires that these
-    // methods support Java, and that they work during VM's bootstrapping.
-    unsigned nb = 0;
+    //This method counts length of method parameters in slots.
+    //See 4.4.3 paragraph 5 in specification.
+    unsigned slot_num = 0;
     if (!is_static()) {
-        nb = 4;
+        slot_num = 1;
     }
     Arg_List_Iterator iter = get_argument_list();
     Java_Type typ;
@@ -216,18 +215,16 @@
         switch(typ) {
         case JAVA_TYPE_LONG:
         case JAVA_TYPE_DOUBLE:
-            nb += 8;
+            slot_num += 2;
             break;
         default:
-            nb += 4;
+            slot_num += 1;
             break;
         }
         iter = advance_arg_iterator(iter);
     }
-    _arguments_size = nb;
-} // Method::get_num_arg_bytes
-
-
+    _arguments_slot_num = slot_num;
+} // Method::calculate_arguments_slot_num
 
 unsigned Method::get_num_ref_args()
 {

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_jit.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_jit.cpp?view=diff&rev=485644&r1=485643&r2=485644
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_jit.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/exception/exceptions_jit.cpp Mon Dec 11 04:27:35 2006
@@ -575,7 +575,7 @@
     ABORT("Lazy exceptions are not supported on this platform");
 #else
     uint8 *args = (uint8 *) (m2n_get_args(m2n_get_last_frame()) + 1);   // +1 to skip constructor
-    args += exn_constr->get_num_arg_bytes() - 4;
+    args += exn_constr->get_num_arg_slots() * 4 - 4;
     exn_athrow(NULL, *(Class_Handle *) args, exn_constr, args);
 #endif
 }   //rth_throw_lazy

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/jit_runtime_support.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/jit_runtime_support.cpp?view=diff&rev=485644&r1=485643&r2=485644
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/jit_runtime_support.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jit/jit_runtime_support.cpp Mon Dec 11 04:27:35 2006
@@ -2093,7 +2093,7 @@
     }
 
     // Every argument is at least 4 bytes long
-    int num_args_estimate = constructor->get_num_arg_bytes() / 4;
+    int num_args_estimate = constructor->get_num_arg_slots();
     jvalue* args = (jvalue*)STD_MALLOC(num_args_estimate * sizeof(jvalue));
     args[0].l = (jobject)obj;
 

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_method.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_method.cpp?view=diff&rev=485644&r1=485643&r2=485644
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_method.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/jvmti/jvmti_method.cpp Mon Dec 11 04:27:35 2006
@@ -236,7 +236,7 @@
     if( !method ) return JVMTI_ERROR_NULL_POINTER;
     if( !size_ptr ) return JVMTI_ERROR_NULL_POINTER;
 
-    *size_ptr = reinterpret_cast<Method*>(method)->get_num_arg_bytes() / 4;
+    *size_ptr = reinterpret_cast<Method*>(method)->get_num_arg_slots();
 
     return JVMTI_ERROR_NONE;
 }

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/compile_IA32.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/compile_IA32.cpp?view=diff&rev=485644&r1=485643&r2=485644
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/compile_IA32.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/compile_IA32.cpp Mon Dec 11 04:27:35 2006
@@ -85,7 +85,7 @@
     assert(!hythread_is_suspend_enabled());
     Method_Signature_Handle msh = method_get_signature(method);
     unsigned num_args = method_args_get_number(msh);
-    unsigned num_arg_words = ((Method*)method)->get_num_arg_bytes()>>2;
+    unsigned num_arg_words = ((Method*)method)->get_num_arg_slots();
 
     unsigned cur_word = 0;
     for(unsigned i=0; i<num_args; i++) {

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/ini_iA32.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/ini_iA32.cpp?view=diff&rev=485644&r1=485643&r2=485644
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/ini_iA32.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/ini_iA32.cpp Mon Dec 11 04:27:35 2006
@@ -122,7 +122,7 @@
             << method->get_class()->get_name()->bytes << " "
             << method->get_name()->bytes << " "
             << method->get_descriptor()->bytes);
-    int sz = method->get_num_arg_bytes() >> 2;
+    int sz = method->get_num_arg_slots();
     void *meth_addr = method->get_code_addr();
     uint32 *arg_words = (uint32*) STD_ALLOCA(sz * sizeof(uint32));
 

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/optimize_ia32.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/optimize_ia32.cpp?view=diff&rev=485644&r1=485643&r2=485644
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/optimize_ia32.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/util/ia32/base/optimize_ia32.cpp Mon Dec 11 04:27:35 2006
@@ -453,7 +453,7 @@
     s = pop(s,  ebx_opnd);
     s = pop(s,  ebp_opnd);
 
-    s = ret(s,  Imm_Opnd(method->get_num_arg_bytes()));
+    s = ret(s,  Imm_Opnd(method->get_num_arg_slots() * 4));
 
     //Fill Patches
     for(; p_c>0 ; p_c--){