Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Delete unused code to make resolved const string CP indices irrelevant #21008

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
81 changes: 0 additions & 81 deletions runtime/compiler/env/VMJ9.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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; i<len; i++)
{
fprintf(stderr,"%c",u8ClassString[i]);
}
fprintf(stderr," (len is %d)\n",len);fflush(stderr);
**/

char* classSignature = TR::Compiler->cls.classNameToSignature((char*)u8ClassString, len, comp);

/**
fprintf(stderr,"classSignature is \n");
for (int i =0; i <len; i++){
fprintf(stderr,"%c",classSignature[i]);
}
fprintf(stderr," (len is %d)\n",len);
**/

TR_OpaqueClassBlock * j9ClassPtr = getClassFromSignature(classSignature, len, method);
//fprintf(stderr,"Class looked up to be %p \n", j9ClassPtr);

if (!j9ClassPtr) return 0;

TR_VMFieldsInfo fields(comp, (J9Class*)j9ClassPtr, 1);

len = (int32_t)jitConfig->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<TR_VMField> 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)
{
Expand Down
1 change: 0 additions & 1 deletion runtime/compiler/env/VMJ9.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 0 additions & 1 deletion runtime/compiler/env/VMJ9Server.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
36 changes: 0 additions & 36 deletions runtime/compiler/env/j9method.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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")},
Expand Down Expand Up @@ -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 }
};
Expand Down
159 changes: 0 additions & 159 deletions runtime/compiler/ilgen/Walker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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; i<numArgs; i++)
genTreeTop(pop());
return node;
}

// Get the type of prefetch
PrefetchType prefetchType = NoPrefetch;
TR::Method *method = symbol->castToMethodSymbol()->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()) \
Expand Down