@@ -1300,7 +1300,20 @@ handleServerMessage(JITServer::ClientStream *client, TR_J9VM *fe, JITServer::Mes
13001300 client->write (response, fe->inSnapshotMode ());
13011301 }
13021302 break ;
1303+ case MessageType::VM_mutableCallSiteEpoch:
1304+ {
1305+ auto recv = client->getRecvData <TR ::KnownObjectTable::Index>();
1306+ TR ::KnownObjectTable::Index mcs = std::get<0 >(recv);
1307+ TR ::KnownObjectTable::Index result = fe->mutableCallSiteEpoch (comp, mcs);
1308+ uintptr_t *resultRefLocation = NULL ;
1309+ if (result != TR ::KnownObjectTable::UNKNOWN )
1310+ {
1311+ resultRefLocation = knot->getPointerLocation (result);
1312+ }
13031313
1314+ client->write (response, result, resultRefLocation);
1315+ }
1316+ break ;
13041317 case MessageType::mirrorResolvedJ9Method:
13051318 {
13061319 // allocate a new TR_ResolvedJ9Method on the heap, to be used as a mirror for performing actions which are only
@@ -2773,31 +2786,6 @@ handleServerMessage(JITServer::ClientStream *client, TR_J9VM *fe, JITServer::Mes
27732786 client->write (response, knot->getExistingIndexAt (objectPointerReference));
27742787 }
27752788 break ;
2776- case MessageType::KnownObjectTable_mutableCallSiteEpoch:
2777- {
2778- auto recv = client->getRecvData <uintptr_t *, bool >();
2779- uintptr_t * mcsReferenceLocation = std::get<0 >(recv);
2780- bool knotEnabled = std::get<1 >(recv);
2781-
2782- uintptr_t mcsObject = 0 ;
2783- TR ::KnownObjectTable::Index knotIndex = TR ::KnownObjectTable::UNKNOWN ;
2784- uintptr_t *objectPointerReference = NULL ;
2785-
2786- {
2787- TR ::VMAccessCriticalSection mutableCallSiteEpoch (fe);
2788- mcsObject = fe->getStaticReferenceFieldAtAddress ((uintptr_t )mcsReferenceLocation);
2789- if (mcsObject && knotEnabled && knot)
2790- {
2791- TR_J9VMBase *fej9 = (TR_J9VMBase *)(fe);
2792- knotIndex = fej9->mutableCallSiteEpoch (comp, mcsObject);
2793- if (knotIndex != TR ::KnownObjectTable::UNKNOWN )
2794- objectPointerReference = knot->getPointerLocation (knotIndex);
2795- }
2796- }
2797-
2798- client->write (response, mcsObject, knotIndex, objectPointerReference);
2799- }
2800- break ;
28012789 case MessageType::KnownObjectTable_dereferenceKnownObjectField:
28022790 {
28032791 auto recv = client->getRecvData <TR ::KnownObjectTable::Index, TR_ResolvedMethod *, int32_t >();
0 commit comments