Skip to content

Commit 5c8b2b9

Browse files
committed
Override SegmentViewVarHandle-related helper for JITServer
This commit adds JITServer support for the FE helper VM_getLayoutVarHandle. Signed-off-by: Nazim Bhuiyan <[email protected]>
1 parent 06ee78c commit 5c8b2b9

File tree

6 files changed

+30
-1
lines changed

6 files changed

+30
-1
lines changed

runtime/compiler/control/JITClientCompilationThread.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1214,6 +1214,16 @@ handleServerMessage(JITServer::ClientStream *client, TR_J9VM *fe, JITServer::Mes
12141214
client->write(response, mhIndex, mhObj);
12151215
}
12161216
break;
1217+
case MessageType::VM_getLayoutVarHandle:
1218+
{
1219+
auto recv = client->getRecvData<TR::KnownObjectTable::Index>();
1220+
TR::KnownObjectTable::Index vhIndex = fe->getLayoutVarHandle(comp, std::get<0>(recv));
1221+
uintptr_t* vhObj = NULL;
1222+
if (vhIndex != TR::KnownObjectTable::UNKNOWN)
1223+
vhObj = knot->getPointerLocation(vhIndex);
1224+
client->write(response, vhIndex, vhObj);
1225+
}
1226+
break;
12171227
#endif // J9VM_OPT_OPENJDK_METHODHANDLE
12181228
case MessageType::VM_isStable:
12191229
{

runtime/compiler/env/VMJ9Server.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2416,6 +2416,22 @@ TR_J9ServerVM::getMethodHandleTableEntryIndex(TR::Compilation *comp, TR::KnownOb
24162416
return mhIndex;
24172417
}
24182418

2419+
TR::KnownObjectTable::Index
2420+
TR_J9ServerVM::getLayoutVarHandle(TR::Compilation *comp, TR::KnownObjectTable::Index layoutIndex)
2421+
{
2422+
TR::KnownObjectTable *knot = comp->getKnownObjectTable();
2423+
if (!knot) return TR::KnownObjectTable::UNKNOWN;
2424+
2425+
JITServer::ServerStream *stream = _compInfoPT->getMethodBeingCompiled()->_stream;
2426+
stream->write(JITServer::MessageType::VM_getLayoutVarHandle, layoutIndex);
2427+
auto recv = stream->read<TR::KnownObjectTable::Index, uintptr_t *>();
2428+
2429+
TR::KnownObjectTable::Index vhIndex = std::get<0>(recv);
2430+
knot->updateKnownObjectTableAtServer(vhIndex, std::get<1>(recv));
2431+
return vhIndex;
2432+
2433+
}
2434+
24192435
#endif /* defined(J9VM_OPT_OPENJDK_METHODHANDLE) */
24202436

24212437
TR::KnownObjectTable::Index

runtime/compiler/env/VMJ9Server.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ class TR_J9ServerVM: public TR_J9VM
245245
virtual UDATA getVMTargetOffset() override;
246246
virtual UDATA getVMIndexOffset() override;
247247
virtual TR::KnownObjectTable::Index getMethodHandleTableEntryIndex(TR::Compilation *comp, TR::KnownObjectTable::Index vhIndex, TR::KnownObjectTable::Index adIndex) override;
248+
virtual TR::KnownObjectTable::Index getLayoutVarHandle(TR::Compilation *comp, TR::KnownObjectTable::Index layoutIndex) override;
248249
#endif
249250
virtual TR::KnownObjectTable::Index getMemberNameFieldKnotIndexFromMethodHandleKnotIndex(TR::Compilation *comp, TR::KnownObjectTable::Index mhIndex, const char *fieldName) override;
250251
virtual bool isMethodHandleExpectedType(TR::Compilation *comp, TR::KnownObjectTable::Index mhIndex, TR::KnownObjectTable::Index expectedTypeIndex) override;

runtime/compiler/net/CommunicationStream.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ class CommunicationStream
128128
// likely to lose an increment when merging/rebasing/etc.
129129
//
130130
static const uint8_t MAJOR_NUMBER = 1;
131-
static const uint16_t MINOR_NUMBER = 65; // ID: YxVkiLqD7B1LhYMv58y8
131+
static const uint16_t MINOR_NUMBER = 66; // ID: bTqSAdP1ZbMfGwEp8jmB
132132
static const uint8_t PATCH_NUMBER = 0;
133133
static uint32_t CONFIGURATION_FLAGS;
134134

runtime/compiler/net/MessageTypes.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@ const char *messageNames[] =
191191
"VM_inSnapshotMode",
192192
"VM_isInvokeCacheEntryAnArray",
193193
"VM_getMethodHandleTableEntryIndex",
194+
"VM_getLayoutVarHandle",
194195
"CompInfo_isCompiled",
195196
"CompInfo_getPCIfCompiled",
196197
"CompInfo_getInvocationCount",

runtime/compiler/net/MessageTypes.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,7 @@ enum MessageType : uint16_t
200200
VM_inSnapshotMode,
201201
VM_isInvokeCacheEntryAnArray,
202202
VM_getMethodHandleTableEntryIndex,
203+
VM_getLayoutVarHandle,
203204

204205
// For static TR::CompilationInfo methods
205206
CompInfo_isCompiled,

0 commit comments

Comments
 (0)