private boolean handleSet(GraphBuilderContext b, Receiver receiver, ValueNode valueNode) { VMThreadLocalInfo info = threadLocalCollector.findInfo(b, receiver.get()); VMThreadLocalSTHolderNode holder = b.add(new VMThreadLocalSTHolderNode(info)); b.add(new StoreVMThreadLocalNode(info, holder, valueNode, BarrierType.PRECISE)); return true; }
private boolean handleGetAddress(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode threadNode) { VMThreadLocalInfo threadLocalInfo = threadLocalCollector.findInfo(b, receiver.get()); b.addPush(targetMethod.getSignature().getReturnKind(), new AddressOfVMThreadLocalNode(threadLocalInfo, threadNode)); return true; }
private boolean handleCompareAndSet(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode threadNode, ValueNode expect, ValueNode update) { VMThreadLocalInfo threadLocalInfo = threadLocalCollector.findInfo(b, receiver.get()); b.addPush(targetMethod.getSignature().getReturnKind(), new CompareAndSetVMThreadLocalNode(threadLocalInfo, threadNode, expect, update)); return true; }
private boolean handleSet(GraphBuilderContext b, Receiver receiver, ValueNode threadNode, ValueNode valueNode, boolean isVolatile) { VMThreadLocalInfo threadLocalInfo = threadLocalCollector.findInfo(b, receiver.get()); if (isVolatile) { b.add(new MembarNode(MemoryBarriers.JMM_PRE_VOLATILE_WRITE)); } b.add(new StoreVMThreadLocalNode(threadLocalInfo, threadNode, valueNode, BarrierType.NONE)); if (isVolatile) { b.add(new MembarNode(MemoryBarriers.JMM_POST_VOLATILE_WRITE)); } return true; }
private boolean handleCompareAndSet(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode expect, ValueNode update) { VMThreadLocalInfo threadLocalInfo = threadLocalCollector.findInfo(b, receiver.get()); VMThreadLocalSTHolderNode holder = b.add(new VMThreadLocalSTHolderNode(threadLocalInfo)); b.addPush(targetMethod.getSignature().getReturnKind(), new CompareAndSetVMThreadLocalNode(threadLocalInfo, holder, expect, update)); return true; }
private boolean handleGetAddress(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) { VMThreadLocalInfo threadLocalInfo = threadLocalCollector.findInfo(b, receiver.get()); VMThreadLocalSTHolderNode holder = b.add(new VMThreadLocalSTHolderNode(threadLocalInfo)); b.addPush(targetMethod.getSignature().getReturnKind(), new AddressOfVMThreadLocalNode(threadLocalInfo, holder)); return true; }
private boolean handleGet(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) { VMThreadLocalInfo info = threadLocalCollector.findInfo(b, receiver.get()); VMThreadLocalSTHolderNode holder = b.add(new VMThreadLocalSTHolderNode(info)); b.addPush(targetMethod.getSignature().getReturnKind(), new LoadVMThreadLocalNode(b.getMetaAccess(), info, holder, BarrierType.PRECISE)); return true; }
private boolean handleGet(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver, ValueNode threadNode, boolean isVolatile) { VMThreadLocalInfo threadLocalInfo = threadLocalCollector.findInfo(b, receiver.get()); if (isVolatile) { b.add(new MembarNode(MemoryBarriers.JMM_PRE_VOLATILE_READ)); } b.addPush(targetMethod.getSignature().getReturnKind(), new LoadVMThreadLocalNode(b.getMetaAccess(), threadLocalInfo, threadNode, BarrierType.NONE)); if (isVolatile) { b.add(new MembarNode(MemoryBarriers.JMM_POST_VOLATILE_READ)); } return true; }