diff --git a/runtime/compiler/env/VMJ9.cpp b/runtime/compiler/env/VMJ9.cpp index 8f81e31b712..428f329a5d7 100644 --- a/runtime/compiler/env/VMJ9.cpp +++ b/runtime/compiler/env/VMJ9.cpp @@ -5500,87 +5500,6 @@ TR_J9VMBase::getStringFieldByName(TR::Compilation * comp, TR::SymbolReference * return true; } -uintptr_t -TR_J9VMBase::getFieldOffset(TR::Compilation * comp, TR::SymbolReference* classRef, TR::SymbolReference* fieldRef) - { - TR_ResolvedMethod* method = classRef->getOwningMethod(comp); - TR::StaticSymbol* classSym = classRef->getSymbol()->castToStaticSymbol(); - j9object_t classString = (j9object_t)getStaticReferenceFieldAtAddress((uintptr_t)classSym->getStaticAddress()); - TR::StaticSymbol* fieldSym = fieldRef->getSymbol()->castToStaticSymbol(); - j9object_t fieldString = (j9object_t)getStaticReferenceFieldAtAddress((uintptr_t)fieldSym->getStaticAddress()); - - int32_t len = (int32_t)jitConfig->javaVM->internalVMFunctions->getStringUTF8Length(vmThread(), classString); - U_8* u8ClassString = (U_8*)comp->trMemory()->allocateStackMemory(len + 1); - - jitConfig->javaVM->internalVMFunctions->copyStringToUTF8Helper(vmThread(), classString, J9_STR_NULL_TERMINATE_RESULT | J9_STR_XLAT, 0, J9VMJAVALANGSTRING_LENGTH(vmThread(), classString), u8ClassString, len + 1); - - /** - //fprintf(stderr,"name is (res is %d) classString is %p\n",res, classString); fflush(stderr); - for (int i =0; icls.classNameToSignature((char*)u8ClassString, len, comp); - - /** - fprintf(stderr,"classSignature is \n"); - for (int i =0; i javaVM->internalVMFunctions->getStringUTF8Length(vmThread(), fieldString); - U_8* u8FieldString = (U_8*)comp->trMemory()->allocateStackMemory(len + 1); - - jitConfig->javaVM->internalVMFunctions->copyStringToUTF8Helper(vmThread(), fieldString, J9_STR_NULL_TERMINATE_RESULT, 0, J9VMJAVALANGSTRING_LENGTH(vmThread(), fieldString), u8FieldString, len + 1); - - ListIterator itr(fields.getFields()) ; - TR_VMField* field; - uint32_t offset = 0; - for (field = itr.getFirst(); field != NULL; field= itr.getNext()) - { - // fprintf(stderr, "fieldName %s fieldOffset %d fieldSig %s\n",field->name, field->offset, field->signature); - if (!strncmp(field->name, (const char*)u8FieldString, len+1)) - { - offset = (uint32_t)(field->offset + getObjectHeaderSizeInBytes()); - // Do we Need this? - // offset = getInstanceFieldOffset(j9ClassPtr, field->name, strlen(field->name), field->signature, strlen(field->signature), - // J9_LOOK_NO_JAVA); - - // fprintf(stderr,">>>>> Offset for %s determined to be : %d\n", field->name,offset); - return (uintptr_t)offset; - } - } - - void * staticAddr = 0; - itr = fields.getStatics() ; - for (field = itr.getFirst(); field != NULL; field=itr.getNext()) - { - if (!strncmp(field->name, (const char*)u8FieldString, len+1)) - { - // Do we Need to acquire VM Access? getInstanceFieldOffset does it? - TR::VMAccessCriticalSection staticFieldAddress(this); - staticAddr = jitConfig->javaVM->internalVMFunctions->staticFieldAddress(_vmThread, - (J9Class*)j9ClassPtr, u8FieldString, len, (U_8*)field->signature, (UDATA)strlen(field->signature), - NULL, NULL, J9_LOOK_NO_JAVA, NULL); - } - } - - - return (uintptr_t)staticAddr; - } - bool TR_J9VMBase::isJavaLangObject(TR_OpaqueClassBlock *clazz) { diff --git a/runtime/compiler/env/VMJ9.h b/runtime/compiler/env/VMJ9.h index 1cb0a5a92e2..8e1d7933de6 100644 --- a/runtime/compiler/env/VMJ9.h +++ b/runtime/compiler/env/VMJ9.h @@ -1061,7 +1061,6 @@ class TR_J9VMBase : public TR_FrontEnd */ virtual bool isMethodHandleExpectedType(TR::Compilation *comp, TR::KnownObjectTable::Index mhIndex, TR::KnownObjectTable::Index expectedTypeIndex); - virtual uintptr_t getFieldOffset( TR::Compilation * comp, TR::SymbolReference* classRef, TR::SymbolReference* fieldRef); /* * \brief * tell whether it's possible to dereference a field given the field symbol reference at compile time diff --git a/runtime/compiler/env/VMJ9Server.hpp b/runtime/compiler/env/VMJ9Server.hpp index 544a9c704b2..ae29c0092bb 100644 --- a/runtime/compiler/env/VMJ9Server.hpp +++ b/runtime/compiler/env/VMJ9Server.hpp @@ -209,7 +209,6 @@ class TR_J9ServerVM: public TR_J9VM virtual intptr_t getVFTEntry(TR_OpaqueClassBlock *clazz, int32_t offset) override; virtual bool isClassArray(TR_OpaqueClassBlock *klass) override; - virtual uintptr_t getFieldOffset(TR::Compilation * comp, TR::SymbolReference* classRef, TR::SymbolReference* fieldRef) override { return 0; } // safe answer // The base version should be safe, no need to override. // virtual bool canDereferenceAtCompileTime(TR::SymbolReference *fieldRef, TR::Compilation *comp) override; // safe answer, might change in the future virtual bool instanceOfOrCheckCast(J9Class *instanceClass, J9Class* castClass) override; diff --git a/runtime/compiler/env/j9method.cpp b/runtime/compiler/env/j9method.cpp index f9892958654..277460bebbb 100644 --- a/runtime/compiler/env/j9method.cpp +++ b/runtime/compiler/env/j9method.cpp @@ -2666,41 +2666,6 @@ void TR_ResolvedJ9Method::construct() { TR::unknownMethod} }; - static X PrefetchMethods[] = - { - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L1", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L2", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L3", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Store", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_LoadNTA", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_StoreNTA", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_StoreConditional", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Release_StoreOnly", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Release_All", "(Ljava/lang/Object;I)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L1", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L2", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L3", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Store", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_LoadNTA", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_StoreNTA", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_StoreConditional", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Release_StoreOnly", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Release_All", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L1", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L2", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Load_L3", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_Store", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_LoadNTA", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_StoreNTA", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Prefetch_StoreConditional", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Release_StoreOnly", "(Ljava/lang/String;Ljava/lang/String;)V")}, - {x(TR::com_ibm_Compiler_Internal__TR_Prefetch, "_TR_Release_All", "(Ljava/lang/String;Ljava/lang/String;)V")}, - { TR::unknownMethod} - }; - static X OSMemoryMethods[] = { {x(TR::org_apache_harmony_luni_platform_OSMemory_putByte_JB_V, "putByte", "(JB)V")}, @@ -4285,7 +4250,6 @@ void TR_ResolvedJ9Method::construct() static Y class34[] = { { "java/util/Hashtable$HashEnumerator", HashtableHashEnumeratorMethods }, - { "com/ibm/Compiler/Internal/Prefetch", PrefetchMethods }, { "java/lang/invoke/VarHandleInternal", VarHandleMethods }, { 0 } }; diff --git a/runtime/compiler/ilgen/Walker.cpp b/runtime/compiler/ilgen/Walker.cpp index 92bd22718e0..89b07d1a05f 100644 --- a/runtime/compiler/ilgen/Walker.cpp +++ b/runtime/compiler/ilgen/Walker.cpp @@ -3937,165 +3937,6 @@ TR_J9ByteCodeIlGenerator::genInvokeInner( } #endif - if (symbol->getRecognizedMethod() == TR::com_ibm_Compiler_Internal__TR_Prefetch) - { - TR::Node *node = NULL; - - if ((comp()->getOptLevel() < hot)) - { - int i = 0; - for (i=0; icastToMethodSymbol()->getMethod(); - if (method->nameLength() == 15 && !strncmp(method->nameChars(), "_TR_Release_All", 15)) - { - prefetchType = ReleaseAll; - } - else if (method->nameLength() == 17 && !strncmp(method->nameChars(), "_TR_Prefetch_Load", 17)) - { - prefetchType = PrefetchLoad; - } - else if (method->nameLength() == 18 && !strncmp(method->nameChars(), "_TR_Prefetch_Store", 18)) - { - prefetchType = PrefetchStore; - } - else if (method->nameLength() == 20) - { - if (!strncmp(method->nameChars(), "_TR_Prefetch_LoadNTA", 20)) - prefetchType = PrefetchLoadNonTemporal; - else if (!strncmp(method->nameChars(), "_TR_Prefetch_Load_L1", 20)) - prefetchType = PrefetchLoadL1; - else if (!strncmp(method->nameChars(), "_TR_Prefetch_Load_L2", 20)) - prefetchType = PrefetchLoadL2; - else if (!strncmp(method->nameChars(), "_TR_Prefetch_Load_L3", 20)) - prefetchType = PrefetchLoadL3; - } - else if (method->nameLength() == 21) - { - if (!strncmp(method->nameChars(), "_TR_Prefetch_StoreNTA", 21)) - prefetchType = PrefetchStoreNonTemporal; - else if (!strncmp(method->nameChars(), "_TR_Release_StoreOnly", 21)) - prefetchType = ReleaseStore; - } - else if (method->nameLength() == 29 && !strncmp(method->nameChars(), "_TR_Prefetch_StoreConditional", 29)) - { - prefetchType = PrefetchStoreConditional; - } - - TR::Node *n2 = pop(); - if (2 == numArgs && n2->getOpCode().isInt()) - { - node = TR::Node::createWithSymRef(TR::Prefetch, 4, symRef); - TR::Node *addrNode = pop(); - - // For constant 2nd arguments, we'll add it to the offset. - if (n2->getOpCode().isLoadConst()) - { - // TR::Prefetch 1st child: address - node->setAndIncChild(0, addrNode); - // TR::Prefetch 2nd child: offset - node->setAndIncChild(1, n2); - } - else - { - // TR::Prefetch 1st child: address - // aiadd - // addrNode - // offsetNode - TR::Node * aiaddNode = TR::Node::create(TR::aiadd, 2, addrNode, n2); - node->setAndIncChild(0, aiaddNode); - - // TR::Prefetch 2nd child: Set offset to be zero. - TR::Node * offsetNode = TR::Node::create(TR::iconst, 0, 0); - node->setAndIncChild(1, offsetNode); - } - - // TR::Prefetch 3rd child : size - TR::Node * size = TR::Node::create(TR::iconst, 0, 1); - node->setAndIncChild(2, size); - - // TR::Prefetch 4th child : type - TR::Node * type = TR::Node::create(TR::iconst, 0, (int32_t)prefetchType); - node->setAndIncChild(3, type); - - genTreeTop(node); - } - else if (3 == numArgs || 2 == numArgs) - { - TR::Node * n3 = n2; // it's already popped above - TR::Node * n2 = pop(); - TR::Node * n1 = (numArgs == 3) ? pop() : NULL; - - if (n3->getSymbolReference() && - n3->getSymbolReference()->getSymbol()->isStatic() && - n3->getSymbolReference()->getSymbol()->castToStaticSymbol()->isConstString() && - n2->getSymbolReference() && - n2->getSymbolReference()->getSymbol()->isStatic() && - n2->getSymbolReference()->getSymbol()->castToStaticSymbol()->isConstString()) - { - uintptr_t offset = fej9()->getFieldOffset(comp(), n2->getSymbolReference(), n3->getSymbolReference() ); - if (offset) - { - TR::Node * n ; - if (comp()->target().is32Bit() || - (int32_t)(((uint32_t)((uint64_t)offset >> 32)) & 0xffffffff) == (uint32_t)0) - { - n = TR::Node::create(TR::iconst, 0, offset); - } - else - { - n = TR::Node::create(TR::lconst, 0, 0); - n->setLongInt(offset); - } - if (numArgs == 3) - { - node = TR::Node::createWithSymRef(TR::Prefetch, 4, symRef); - node->setAndIncChild(1, n); - node->setAndIncChild(0, n1); - } - else - { - node = TR::Node::createWithSymRef(TR::Prefetch, 4, symRef); - node->setAndIncChild(0, n); - TR::Node * offsetNode = TR::Node::create(TR::iconst, 0, 0); - node->setAndIncChild(1, offsetNode); - } - - // TR::Prefetch 3rd child : size - TR::Node * size = TR::Node::create(TR::iconst, 0, 1); - node->setAndIncChild(2, size); - - // TR::Prefetch 4th child : type - TR::Node * type = TR::Node::create(TR::iconst, 0, (int32_t)prefetchType); - node->setAndIncChild(3, type); - - genTreeTop(node); - } - else - { - // Generate treetops to retain proper reference count. - genTreeTop(n2); - genTreeTop(n3); - if (n1) - genTreeTop(n1); - - traceMsg(comp(),"Prefetch: Unable to resolve offset.\n"); - } - } - } - else - { - TR_ASSERT(0, "TR::Prefetch does not have two or three children"); - } - - return node; - } - #define DAA_PRINT(a) \ case a: \ if(trace()) \