harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mfur...@apache.org
Subject svn commit: r553484 - in /harmony/enhanced/drlvm/trunk: src/test/regression/excludes/ vm/jitrino/src/jet/ vm/jitrino/src/optimizer/ vm/jitrino/src/shared/ vm/jitrino/src/translator/java/ vm/vmcore/src/class_support/
Date Thu, 05 Jul 2007 12:51:21 GMT
Author: mfursov
Date: Thu Jul  5 05:51:20 2007
New Revision: 553484

URL: http://svn.apache.org/viewvc?view=rev&rev=553484
Log:
Fix for HARMONY-4349  (error in lazy resolution helpers)
Fix for HARMONY-4334  (support for unresolved compressed types in Jitrino.OPT)
Fix for HARMONY-4181  (fix for x86_64 calling conventions support in Jitrino.JET)

reenabling HARMONY-4267 regression test on x86_64 platforms


Modified:
    harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.linux.x86_64
    harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.windows.x86_64
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/compiler.cpp
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/csig.h
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/Opnd.cpp
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.cpp
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.h
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaLabelPrepass.h
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp

Modified: harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.linux.x86_64
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.linux.x86_64?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.linux.x86_64 (original)
+++ harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.linux.x86_64 Thu Jul
 5 05:51:20 2007
@@ -16,6 +16,4 @@
 H3909
 # Exclude this test because JVMTI is not implemented for x86_64 in JIT mode yet
 H3982
-# Exclude this test because unresolved types support is not ready for x86_64 in JIT
-H4267
  

Modified: harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.windows.x86_64
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.windows.x86_64?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.windows.x86_64 (original)
+++ harmony/enhanced/drlvm/trunk/src/test/regression/excludes/exclude.windows.x86_64 Thu Jul
 5 05:51:20 2007
@@ -19,6 +19,3 @@
 #HARMONY-4093
 H2113
 
-# Exclude this test because unresolved types support is not ready for x86_64 in JIT mode
yet.
-H4267
-

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/compiler.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/compiler.cpp?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/compiler.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/compiler.cpp Thu Jul  5 05:51:20 2007
@@ -1404,8 +1404,14 @@
         if (gr == bp) continue;
         g_global_grs.push_back(gr);
     }
-    // ... for fr registers, leave 3 registers available for scratch
-    for (unsigned i=3; i<fr_num; i++) {
+	// On a platform with float-point args passed on registers, we need at 
+	// least one scratch register in addition to the regs occupied by the args.
+	// For example: when all arg regs are occupied and we need to perform mem-mem 
+	// move e.g. field from operand stack into a memory stack.
+	// When no float-point args are passed on regs, we need at least 3 scratch 
+	// to perform computations and mem-mem moves in codegen.
+	const unsigned num_of_scratch = MAX_FR_ARGS<3 ? 3 : (MAX_FR_ARGS+1);
+    for (unsigned i=num_of_scratch; i<fr_num; i++) {
         AR fr = _fr(i);
         g_global_frs.push_back(fr);
     }

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/csig.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/csig.h?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/csig.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/jet/csig.h Thu Jul  5 05:51:20 2007
@@ -89,9 +89,16 @@
      * @brief On IA-32 it's CCONV_CDECL_IA32, on EM64T it's CCONV_EM64T.
      */
     #define CCONV_CDECL     CCONV_EM64T
+	#ifdef _WIN32
+		/// A nubmer of FR registers dedicated to pass float-point arguments.
+		#define MAX_FR_ARGS (4)
+	#else
+		#define MAX_FR_ARGS (8)
+	#endif
 #else
     #define CCONV_STDCALL   CCONV_STDCALL_IA32
     #define CCONV_CDECL     CCONV_CDECL_IA32
+	#define MAX_FR_ARGS (0)
 #endif
 
 /**

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/Opnd.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/Opnd.cpp?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/Opnd.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/optimizer/Opnd.cpp Thu Jul  5 05:51:20 2007
@@ -154,6 +154,7 @@
         return typeManager.getFloatType();
         // object types
     case Type::CompressedSystemObject:
+    case Type::CompressedUnresolvedObject:
     case Type::CompressedSystemClass:
     case Type::CompressedSystemString:
     case Type::CompressedArray:           case Type::CompressedObject:

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.cpp?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.cpp Thu Jul  5 05:51:20 2007
@@ -145,6 +145,7 @@
     case Type::CompressedSystemClass:
     case Type::CompressedSystemString:
     case Type::CompressedNullObject:
+    case Type::CompressedUnresolvedObject:
     case Type::CompressedArray:
     case Type::CompressedObject:
     case Type::CompressedMethodPtr:
@@ -326,6 +327,7 @@
 
     compressedSystemStringType(NULL), 
     compressedSystemObjectType(NULL),
+    compressedUnresolvedObjectType(NULL),
     compressedSystemClassType(NULL),
     compressedNullObjectType(Type::CompressedNullObject), 
 
@@ -395,6 +397,8 @@
         ObjectType(Type::CompressedSystemString,systemStringVMTypeHandle,*this);
     compressedSystemObjectType = new (memManager) 
         ObjectType(Type::CompressedSystemObject,systemObjectVMTypeHandle,*this);
+    compressedUnresolvedObjectType = new (memManager) 
+        ObjectType(Type::CompressedUnresolvedObject,systemObjectVMTypeHandle,*this);
     compressedSystemClassType = new (memManager) 
         ObjectType(Type::CompressedSystemClass,systemClassVMTypeHandle,*this);
     compressedUserObjectTypes.insert(systemStringVMTypeHandle,compressedSystemStringType);
@@ -736,6 +740,8 @@
         }
     case Type::CompressedSystemObject:
         return getSystemObjectType();
+    case Type::CompressedUnresolvedObject:
+        return getUnresolvedObjectType();
     case Type::CompressedSystemClass:
         return getSystemClassType();
     case Type::CompressedSystemString:
@@ -767,6 +773,8 @@
         }
     case Type::SystemObject:
         return getCompressedSystemObjectType();
+    case Type::UnresolvedObject:
+        return getCompressedUnresolvedObjectType();
     case Type::SystemClass:
         return getCompressedSystemClassType();
     case Type::SystemString:
@@ -934,6 +942,7 @@
     case CompressedArray:            s = "cmp[]"; break;
     case CompressedObject:           s = "cmpo"; break;
     case CompressedNullObject:       s = "cmpnull"; break;
+    case CompressedUnresolvedObject: s = "cmpunreso"; break;
     default:               s = "???"; break;
     }
     os << s;
@@ -1076,6 +1085,7 @@
     case CompressedSystemClass:     s = "ccl"; break;
     case CompressedSystemString:    s = "cst"; break;
     case CompressedNullObject:      s = "cnl"; break;
+    case CompressedUnresolvedObject:s = "cun"; break;
     case CompressedArray:           s = "c[]"; break;
     case CompressedObject:          s = "co "; break;
     case VTablePtrObj:    s = "vtb"; break;
@@ -1146,6 +1156,7 @@
     case Type::CompressedSystemClass:
     case Type::CompressedSystemString:
     case Type::CompressedNullObject:
+    case Type::CompressedUnresolvedObject:
     case Type::CompressedArray:
     case Type::CompressedObject:
     case Type::CompressedVTablePtr:
@@ -1271,6 +1282,7 @@
     DECL_TAG_ITEM(CompressedSystemClass,  "ccl "),
     DECL_TAG_ITEM(CompressedSystemString, "cst "),
     DECL_TAG_ITEM(CompressedNullObject, "cnl "),
+    DECL_TAG_ITEM(CompressedUnresolvedObject, "cun "),
     DECL_TAG_ITEM(CompressedArray, "c[] "),
     DECL_TAG_ITEM(CompressedObject, "co  "),
 

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.h?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/shared/Type.h Thu Jul  5 05:51:20 2007
@@ -124,6 +124,8 @@
 
         // special null object reference
         CompressedNullObject,
+        // Unresolved Object
+        CompressedUnresolvedObject,
 
         //     (2.1.2) Array type
         CompressedArray,
@@ -276,28 +278,30 @@
     }
     static Tag compressReference(Tag tag) {
         switch (tag) {
-        case SystemObject: return CompressedSystemObject;
-        case SystemClass:  return CompressedSystemClass;
-        case SystemString: return CompressedSystemString;
-        case NullObject:   return CompressedNullObject;
-        case Array:        return CompressedArray;
-        case Object:       return CompressedObject;
-        case MethodPtr:    return CompressedMethodPtr;
-        case VTablePtr:    return CompressedVTablePtr;
+        case SystemObject:     return CompressedSystemObject;
+        case SystemClass:      return CompressedSystemClass;
+        case SystemString:     return CompressedSystemString;
+        case NullObject:       return CompressedNullObject;
+        case UnresolvedObject: return CompressedUnresolvedObject;
+        case Array:            return CompressedArray;
+        case Object:           return CompressedObject;
+        case MethodPtr:        return CompressedMethodPtr;
+        case VTablePtr:        return CompressedVTablePtr;
         default:
             assert(0); return Void;
         }
     }
     static Tag unCompressReference(Tag tag) {
         switch (tag) {
-        case CompressedSystemObject: return SystemObject;
-        case CompressedSystemClass:  return SystemClass;
-        case CompressedSystemString: return SystemString;
-        case CompressedNullObject:   return NullObject;
-        case CompressedArray:        return Array;
-        case CompressedObject:       return Object;
-        case CompressedMethodPtr:    return MethodPtr;
-        case CompressedVTablePtr:    return VTablePtr;
+        case CompressedSystemObject:     return SystemObject;
+        case CompressedSystemClass:      return SystemClass;
+        case CompressedSystemString:     return SystemString;
+        case CompressedNullObject:       return NullObject;
+        case CompressedUnresolvedObject: return UnresolvedObject;
+        case CompressedArray:            return Array;
+        case CompressedObject:           return Object;
+        case CompressedMethodPtr:        return MethodPtr;
+        case CompressedVTablePtr:        return VTablePtr;
         default:
             assert(0); return Void;
         }
@@ -307,7 +311,7 @@
                 ((CompressedSystemObject <= tag) && (tag <= CompressedObject)));
     }
     static bool isUnresolvedObject(Tag tag) {
-        return tag == UnresolvedObject;
+        return ((tag == UnresolvedObject) || (tag == CompressedUnresolvedObject));
     }
     static bool isNullObject(Tag tag) {
         return ((tag == NullObject) || (tag == CompressedNullObject));
@@ -697,6 +701,7 @@
     Type*         getCompressedNullObjectType()  {return &compressedNullObjectType;}
     ObjectType*   getCompressedSystemStringType(){return compressedSystemStringType;}
     ObjectType*   getCompressedSystemObjectType(){return compressedSystemObjectType;}
+    ObjectType*   getCompressedUnresolvedObjectType(){return compressedUnresolvedObjectType;}
     ObjectType*   getCompressedSystemClassType() {return compressedSystemClassType;}
 
     NamedType*    getValueType(void* vmTypeHandle);
@@ -787,6 +792,7 @@
     Type          offsetPlusHeapbaseType;
     ObjectType*   compressedSystemStringType;
     ObjectType*   compressedSystemObjectType;
+    ObjectType*   compressedUnresolvedObjectType;
     ObjectType*   compressedSystemClassType;
     Type          compressedNullObjectType;
     // hashtable for user-defined object and value types

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaLabelPrepass.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaLabelPrepass.h?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaLabelPrepass.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/translator/java/JavaLabelPrepass.h Thu Jul
 5 05:51:20 2007
@@ -280,6 +280,7 @@
         case Type::CompressedArray:           
         case Type::CompressedObject:
         case Type::CompressedNullObject:
+        case Type::CompressedUnresolvedObject:
         case Type::CompressedSystemString:
         case Type::CompressedSystemObject:
             return A;

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp?view=diff&rev=553484&r1=553483&r2=553484
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/class_support/Resolve.cpp Thu Jul  5 05:51:20
2007
@@ -886,7 +886,7 @@
             }
         }
     }
-    if(method && !method_can_link_special(curr_clss, index, method, false))
+    if(method && !method_can_link_special(curr_clss, index, method, raise_exn))
         return NULL;
     return method;
 } //resolve_special_method_env



Mime
View raw message