src/share/vm/runtime/sharedRuntime.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6893268 Sdiff src/share/vm/runtime

src/share/vm/runtime/sharedRuntime.cpp

Print this page
rev 1081 : imported patch indy-cleanup-6893081.patch
rev 1083 : [mq]: indy.compiler.inline.patch


2128                                            jlsValue->char_at_addr(jlsOffset);
2129   (void) UNICODE::as_utf8(jlsPos, jlsLen, (char *)dst, max_dtrace_string_size);
2130 }
2131 #endif // ndef HAVE_DTRACE_H
2132 
2133 // -------------------------------------------------------------------------
2134 // Java-Java calling convention
2135 // (what you use when Java calls Java)
2136 
2137 //------------------------------name_for_receiver----------------------------------
2138 // For a given signature, return the VMReg for parameter 0.
2139 VMReg SharedRuntime::name_for_receiver() {
2140   VMRegPair regs;
2141   BasicType sig_bt = T_OBJECT;
2142   (void) java_calling_convention(&sig_bt, &regs, 1, true);
2143   // Return argument 0 register.  In the LP64 build pointers
2144   // take 2 registers, but the VM wants only the 'main' name.
2145   return regs.first();
2146 }
2147 
2148 VMRegPair *SharedRuntime::find_callee_arguments(symbolOop sig, bool is_static, int* arg_size) {
2149   // This method is returning a data structure allocating as a
2150   // ResourceObject, so do not put any ResourceMarks in here.
2151   char *s = sig->as_C_string();
2152   int len = (int)strlen(s);
2153   *s++; len--;                  // Skip opening paren
2154   char *t = s+len;
2155   while( *(--t) != ')' ) ;      // Find close paren
2156 
2157   BasicType *sig_bt = NEW_RESOURCE_ARRAY( BasicType, 256 );
2158   VMRegPair *regs = NEW_RESOURCE_ARRAY( VMRegPair, 256 );
2159   int cnt = 0;
2160   if (!is_static) {
2161     sig_bt[cnt++] = T_OBJECT; // Receiver is argument 0; not in signature
2162   }
2163 
2164   while( s < t ) {
2165     switch( *s++ ) {            // Switch on signature character
2166     case 'B': sig_bt[cnt++] = T_BYTE;    break;
2167     case 'C': sig_bt[cnt++] = T_CHAR;    break;
2168     case 'D': sig_bt[cnt++] = T_DOUBLE;  sig_bt[cnt++] = T_VOID; break;
2169     case 'F': sig_bt[cnt++] = T_FLOAT;   break;
2170     case 'I': sig_bt[cnt++] = T_INT;     break;
2171     case 'J': sig_bt[cnt++] = T_LONG;    sig_bt[cnt++] = T_VOID; break;
2172     case 'S': sig_bt[cnt++] = T_SHORT;   break;
2173     case 'Z': sig_bt[cnt++] = T_BOOLEAN; break;
2174     case 'V': sig_bt[cnt++] = T_VOID;    break;
2175     case 'L':                   // Oop
2176       while( *s++ != ';'  ) ;   // Skip signature
2177       sig_bt[cnt++] = T_OBJECT;
2178       break;
2179     case '[': {                 // Array
2180       do {                      // Skip optional size




2128                                            jlsValue->char_at_addr(jlsOffset);
2129   (void) UNICODE::as_utf8(jlsPos, jlsLen, (char *)dst, max_dtrace_string_size);
2130 }
2131 #endif // ndef HAVE_DTRACE_H
2132 
2133 // -------------------------------------------------------------------------
2134 // Java-Java calling convention
2135 // (what you use when Java calls Java)
2136 
2137 //------------------------------name_for_receiver----------------------------------
2138 // For a given signature, return the VMReg for parameter 0.
2139 VMReg SharedRuntime::name_for_receiver() {
2140   VMRegPair regs;
2141   BasicType sig_bt = T_OBJECT;
2142   (void) java_calling_convention(&sig_bt, &regs, 1, true);
2143   // Return argument 0 register.  In the LP64 build pointers
2144   // take 2 registers, but the VM wants only the 'main' name.
2145   return regs.first();
2146 }
2147 
2148 VMRegPair *SharedRuntime::find_callee_arguments(symbolOop sig, bool has_receiver, int* arg_size) {
2149   // This method is returning a data structure allocating as a
2150   // ResourceObject, so do not put any ResourceMarks in here.
2151   char *s = sig->as_C_string();
2152   int len = (int)strlen(s);
2153   *s++; len--;                  // Skip opening paren
2154   char *t = s+len;
2155   while( *(--t) != ')' ) ;      // Find close paren
2156 
2157   BasicType *sig_bt = NEW_RESOURCE_ARRAY( BasicType, 256 );
2158   VMRegPair *regs = NEW_RESOURCE_ARRAY( VMRegPair, 256 );
2159   int cnt = 0;
2160   if (has_receiver) {
2161     sig_bt[cnt++] = T_OBJECT; // Receiver is argument 0; not in signature
2162   }
2163 
2164   while( s < t ) {
2165     switch( *s++ ) {            // Switch on signature character
2166     case 'B': sig_bt[cnt++] = T_BYTE;    break;
2167     case 'C': sig_bt[cnt++] = T_CHAR;    break;
2168     case 'D': sig_bt[cnt++] = T_DOUBLE;  sig_bt[cnt++] = T_VOID; break;
2169     case 'F': sig_bt[cnt++] = T_FLOAT;   break;
2170     case 'I': sig_bt[cnt++] = T_INT;     break;
2171     case 'J': sig_bt[cnt++] = T_LONG;    sig_bt[cnt++] = T_VOID; break;
2172     case 'S': sig_bt[cnt++] = T_SHORT;   break;
2173     case 'Z': sig_bt[cnt++] = T_BOOLEAN; break;
2174     case 'V': sig_bt[cnt++] = T_VOID;    break;
2175     case 'L':                   // Oop
2176       while( *s++ != ';'  ) ;   // Skip signature
2177       sig_bt[cnt++] = T_OBJECT;
2178       break;
2179     case '[': {                 // Array
2180       do {                      // Skip optional size


src/share/vm/runtime/sharedRuntime.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File