You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2006/12/28 12:51:21 UTC

svn commit: r490705 - in /harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf: IpfEncoder.cpp IpfInstCodeSelector.cpp include/IpfCodeSelector.h

Author: varlax
Date: Thu Dec 28 03:51:20 2006
New Revision: 490705

URL: http://svn.apache.org/viewvc?view=rev&rev=490705
Log:
Applied HARMONY-2843 [drlvm] [ipf] [jit] minor changes in jitrino.ia64
IPF-only so did not test.

Modified:
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEncoder.cpp
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp
    harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEncoder.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEncoder.cpp?view=diff&rev=490705&r1=490704&r2=490705
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEncoder.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfEncoder.cpp Thu Dec 28 03:51:20 2006
@@ -562,13 +562,13 @@
                 } else {
                     IPF_ERR << __FILE__ << ": " << __LINE__
                             << ": NOT YET IMPLEMENTED INSTRUCTION: "
-                            << Encoder::getMnemonic(INST_MOV) << "\n";
+                            << IrPrinter::toString(inst) << "\n";
                     assert(0);
                 }
             } else {
                 IPF_ERR << __FILE__ << ": " << __LINE__
                       << ": NOT YET IMPLEMENTED INSTRUCTION: "
-                       << Encoder::getMnemonic(INST_MOV) << "\n";
+                       << IrPrinter::toString(inst) << "\n";
                 assert(0);
             }
             break;

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp?view=diff&rev=490705&r1=490704&r2=490705
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/IpfInstCodeSelector.cpp Thu Dec 28 03:51:20 2006
@@ -1842,8 +1842,7 @@
 
 CG_OpndHandle *IpfInstCodeSelector::tau_ldIntfTableAddr(Type          *dstType, 
                                                         CG_OpndHandle *base, 
-                                                        NamedType     *vtableType,
-                                                        CG_OpndHandle *) {
+                                                        NamedType     *vtableType) {
 
     IPF_LOG << "      tau_ldIntfTableAddr; dstType==" << Type::tag2str(dstType->tag)  
         << "; vtableType=" << Type::tag2str(vtableType->tag) << endl;
@@ -2958,6 +2957,47 @@
 }                                       
 
 //----------------------------------------------------------------------------//
+
+CG_OpndHandle *IpfInstCodeSelector::ldRef(Type *dstType,
+                                          MethodDesc* enclosingMethod,
+                                          uint32 refToken,
+                                          bool uncompress) 
+{
+    assert(dstType->isSystemString() || dstType->isSystemClass());
+    
+    RegOpnd *retOpnd = opndManager->newRegOpnd(OPND_G_REG, toDataKind(dstType->tag));
+    Opnd *helperArgs[] = {
+        opndManager->newImm(refToken),
+        opndManager->newImm((int64) enclosingMethod->getParentType()->getRuntimeIdentifier())
+    };
+    CompilationInterface::RuntimeHelperId hId = CompilationInterface::Helper_LdRef;
+    uint64  address        = (uint64) compilationInterface.getRuntimeHelperAddress(hId);
+    Opnd    *helperAddress = opndManager->newImm(address);
+    
+    directCall(2, helperArgs, retOpnd, helperAddress, p0);
+
+    return retOpnd;
+}
+
+//----------------------------------------------------------------------------//
+
+void IpfInstCodeSelector::methodEntry(MethodDesc *meth) { 
+    
+    if (compilationInterface.getCompilationParams().exe_notify_method_entry) {
+        NOT_IMPLEMENTED_V("methodEntry"); 
+    }
+
+}
+
+void IpfInstCodeSelector::methodEnd(MethodDesc *meth, CG_OpndHandle *retopnd) { 
+    
+    if (compilationInterface.getCompilationParams().exe_notify_method_exit) {
+        NOT_IMPLEMENTED_V("methodEnd"); 
+    }
+
+}
+
+//----------------------------------------------------------------------------//
 // Divide two float values. 
 
 void IpfInstCodeSelector::divFloat(RegOpnd *dst, CG_OpndHandle *src1, CG_OpndHandle *src2, bool rem) {
@@ -3136,6 +3176,7 @@
         case Type::Array                  : return DATA_BASE;
         case Type::Object                 : return DATA_BASE;
         case Type::NullObject             : return DATA_BASE;
+        case Type::SystemClass            : return DATA_BASE;
         case Type::SystemObject           : return DATA_BASE;
         case Type::SystemString           : return DATA_BASE;
         case Type::ManagedPtr             : return DATA_MPTR;
@@ -3158,6 +3199,7 @@
         case Type::Object       : return OPND_G_REG;
         case Type::NullObject   : return OPND_G_REG;
         case Type::SystemObject : return OPND_G_REG;
+        case Type::SystemClass  : return OPND_G_REG;
         case Type::Boolean      : return OPND_G_REG;
         case Type::Char         : return OPND_G_REG;
         case Type::Int8         : return OPND_G_REG;

Modified: harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h?view=diff&rev=490705&r1=490704&r2=490705
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h (original)
+++ harmony/enhanced/drlvm/trunk/vm/jitrino/src/codegenerator/ipf/include/IpfCodeSelector.h Thu Dec 28 03:51:20 2006
@@ -207,7 +207,6 @@
     CG_OpndHandle *tau_ldVirtFunAddr(Type*, CG_OpndHandle*, MethodDesc*, CG_OpndHandle*);
     CG_OpndHandle *tau_ldVTableAddr(Type*, CG_OpndHandle*, CG_OpndHandle*);
     CG_OpndHandle *getVTableAddr(Type*, ObjectType*);
-    CG_OpndHandle *tau_ldIntfTableAddr(Type*, CG_OpndHandle*, NamedType*, CG_OpndHandle*);
     CG_OpndHandle *ldFieldAddr(Type*, CG_OpndHandle*, FieldDesc*);
     CG_OpndHandle *ldStaticAddr(Type*, FieldDesc*);
 
@@ -308,14 +307,15 @@
 
     CG_OpndHandle* convUPtrToObject(ObjectType*, CG_OpndHandle*)              { NOT_IMPLEMENTED_C("convUPtrToObject") }
     CG_OpndHandle* convToUPtr(PtrType*, CG_OpndHandle*)                       { NOT_IMPLEMENTED_C("convToUPtr") }
-    CG_OpndHandle* tau_ldIntfTableAddr(Type*, CG_OpndHandle*, NamedType*)     { NOT_IMPLEMENTED_C("tau_ldIntfTableAddr") }
+    CG_OpndHandle *tau_ldIntfTableAddr(Type*, CG_OpndHandle*, NamedType*, CG_OpndHandle*) { NOT_IMPLEMENTED_C("tau_ldIntfTableAddr"); }
+    CG_OpndHandle* tau_ldIntfTableAddr(Type*, CG_OpndHandle*, NamedType*);
     CG_OpndHandle* arraycopyReverse(unsigned int, CG_OpndHandle**)            { NOT_IMPLEMENTED_C("arraycopyReverse") }
     CG_OpndHandle* arraycopy(unsigned int, CG_OpndHandle**)                   { NOT_IMPLEMENTED_C("arraycopy") }
     CG_OpndHandle* addElemIndexWithLEA(Type*, CG_OpndHandle*, CG_OpndHandle*) { NOT_IMPLEMENTED_C("addElemIndexWithLEA") }
-    CG_OpndHandle* ldRef(Type*, MethodDesc*, unsigned int, bool)              { NOT_IMPLEMENTED_C("ldRef") }
+    CG_OpndHandle* ldRef(Type*, MethodDesc*, unsigned int, bool); 
     void           pseudoInst()                                               { NOT_IMPLEMENTED_V("pseudoInst") }
-    void           methodEntry(MethodDesc*)                                   { NOT_IMPLEMENTED_V("methodEntry") }
-    void           methodEnd(MethodDesc*, CG_OpndHandle*)                     { NOT_IMPLEMENTED_V("methodEnd") }
+    void           methodEntry(MethodDesc*);
+    void           methodEnd(MethodDesc*, CG_OpndHandle*);
     void           tau_stRef(CG_OpndHandle*, CG_OpndHandle*, CG_OpndHandle*, Type::Tag, bool, CG_OpndHandle*, CG_OpndHandle*, CG_OpndHandle*) { NOT_IMPLEMENTED_V("tau_stRef") }
 
     //---------------------------------------------------------------------------//