@@ -2960,9 +2960,10 @@ handleServerMessage(JITServer::ClientStream *client, TR_J9VM *fe, JITServer::Mes
2960
2960
break ;
2961
2961
case MessageType::KnownObjectTable_addFieldAddressFromBaseIndex:
2962
2962
{
2963
- auto recv = client->getRecvData <TR::KnownObjectTable::Index, intptr_t >();
2963
+ auto recv = client->getRecvData <TR::KnownObjectTable::Index, intptr_t , bool >();
2964
2964
TR::KnownObjectTable::Index baseObjectIndex = std::get<0 >(recv);
2965
2965
intptr_t fieldOffset = std::get<1 >(recv);
2966
+ bool isArrayWithConstantElements = std::get<2 >(recv);
2966
2967
2967
2968
TR::KnownObjectTable::Index resultIndex = TR::KnownObjectTable::UNKNOWN;
2968
2969
@@ -2974,11 +2975,11 @@ handleServerMessage(JITServer::ClientStream *client, TR_J9VM *fe, JITServer::Mes
2974
2975
uintptr_t objectPointer = fe->getReferenceFieldAtAddress (fieldAddress);
2975
2976
2976
2977
if (objectPointer)
2977
- resultIndex = knot->getOrCreateIndex ( objectPointer);
2978
+ resultIndex = knot->getOrCreateIndexAt (& objectPointer, isArrayWithConstantElements );
2978
2979
}
2979
2980
2980
- uintptr_t *resultPointer =
2981
- (resultIndex == - 1 ) ? NULL : knot->getPointerLocation (resultIndex);
2981
+ uintptr_t *resultPointer = (resultIndex == TR::KnownObjectTable::UNKNOWN) ?
2982
+ NULL : knot->getPointerLocation (resultIndex);
2982
2983
2983
2984
client->write (response, resultIndex, resultPointer);
2984
2985
}
@@ -2989,15 +2990,15 @@ handleServerMessage(JITServer::ClientStream *client, TR_J9VM *fe, JITServer::Mes
2989
2990
TR::KnownObjectTable::Index baseObjectIndex = std::get<0 >(recv);
2990
2991
intptr_t fieldOffset = std::get<1 >(recv);
2991
2992
2992
- UDATA data = 0 ;
2993
+ J9::TransformUtil::value data;
2993
2994
2994
2995
{
2995
2996
TR::VMAccessCriticalSection addFieldAddressFromBaseIndex (fe);
2996
2997
uintptr_t baseObjectAddress = knot->getPointer (baseObjectIndex);
2997
2998
2998
2999
uintptr_t fieldAddress = baseObjectAddress + fieldOffset;
2999
3000
3000
- data = *(UDATA *) fieldAddress;
3001
+ data = *(J9::TransformUtil::value *) fieldAddress;
3001
3002
}
3002
3003
3003
3004
client->write (response, data);
0 commit comments