< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.word/src/org/graalvm/compiler/word/WordOperationPlugin.java

Print this page
rev 52509 : [mq]: graal2


 300             case IS_NON_NULL:
 301                 assert args.length == 1;
 302                 b.push(returnKind, comparisonOp(b, Condition.NE, args[0], ConstantNode.forIntegerKind(wordKind, 0L)));
 303                 break;
 304 
 305             case NOT:
 306                 assert args.length == 1;
 307                 b.addPush(returnKind, new XorNode(args[0], b.add(forIntegerKind(wordKind, -1))));
 308                 break;
 309 
 310             case READ_POINTER:
 311             case READ_OBJECT:
 312             case READ_BARRIERED: {
 313                 assert args.length == 2 || args.length == 3;
 314                 JavaKind readKind = wordTypes.asKind(wordMethod.getSignature().getReturnType(wordMethod.getDeclaringClass()));
 315                 AddressNode address = makeAddress(b, args[0], args[1]);
 316                 LocationIdentity location;
 317                 if (args.length == 2) {
 318                     location = any();
 319                 } else {
 320                     assert args[2].isConstant();
 321                     location = snippetReflection.asObject(LocationIdentity.class, args[2].asJavaConstant());

 322                 }
 323                 b.push(returnKind, readOp(b, readKind, address, location, operation.opcode()));
 324                 break;
 325             }
 326             case READ_HEAP: {
 327                 assert args.length == 3;
 328                 JavaKind readKind = wordTypes.asKind(wordMethod.getSignature().getReturnType(wordMethod.getDeclaringClass()));
 329                 AddressNode address = makeAddress(b, args[0], args[1]);
 330                 BarrierType barrierType = snippetReflection.asObject(BarrierType.class, args[2].asJavaConstant());
 331                 b.push(returnKind, readOp(b, readKind, address, any(), barrierType, true));
 332                 break;
 333             }
 334             case WRITE_POINTER:
 335             case WRITE_OBJECT:
 336             case WRITE_BARRIERED:
 337             case INITIALIZE: {
 338                 assert args.length == 3 || args.length == 4;
 339                 JavaKind writeKind = wordTypes.asKind(wordMethod.getSignature().getParameterType(wordMethod.isStatic() ? 2 : 1, wordMethod.getDeclaringClass()));
 340                 AddressNode address = makeAddress(b, args[0], args[1]);
 341                 LocationIdentity location;




 300             case IS_NON_NULL:
 301                 assert args.length == 1;
 302                 b.push(returnKind, comparisonOp(b, Condition.NE, args[0], ConstantNode.forIntegerKind(wordKind, 0L)));
 303                 break;
 304 
 305             case NOT:
 306                 assert args.length == 1;
 307                 b.addPush(returnKind, new XorNode(args[0], b.add(forIntegerKind(wordKind, -1))));
 308                 break;
 309 
 310             case READ_POINTER:
 311             case READ_OBJECT:
 312             case READ_BARRIERED: {
 313                 assert args.length == 2 || args.length == 3;
 314                 JavaKind readKind = wordTypes.asKind(wordMethod.getSignature().getReturnType(wordMethod.getDeclaringClass()));
 315                 AddressNode address = makeAddress(b, args[0], args[1]);
 316                 LocationIdentity location;
 317                 if (args.length == 2) {
 318                     location = any();
 319                 } else {
 320                     assert args[2].isConstant() : args[2];
 321                     location = snippetReflection.asObject(LocationIdentity.class, args[2].asJavaConstant());
 322                     assert location != null : snippetReflection.asObject(Object.class, args[2].asJavaConstant());
 323                 }
 324                 b.push(returnKind, readOp(b, readKind, address, location, operation.opcode()));
 325                 break;
 326             }
 327             case READ_HEAP: {
 328                 assert args.length == 3;
 329                 JavaKind readKind = wordTypes.asKind(wordMethod.getSignature().getReturnType(wordMethod.getDeclaringClass()));
 330                 AddressNode address = makeAddress(b, args[0], args[1]);
 331                 BarrierType barrierType = snippetReflection.asObject(BarrierType.class, args[2].asJavaConstant());
 332                 b.push(returnKind, readOp(b, readKind, address, any(), barrierType, true));
 333                 break;
 334             }
 335             case WRITE_POINTER:
 336             case WRITE_OBJECT:
 337             case WRITE_BARRIERED:
 338             case INITIALIZE: {
 339                 assert args.length == 3 || args.length == 4;
 340                 JavaKind writeKind = wordTypes.asKind(wordMethod.getSignature().getParameterType(wordMethod.isStatic() ? 2 : 1, wordMethod.getDeclaringClass()));
 341                 AddressNode address = makeAddress(b, args[0], args[1]);
 342                 LocationIdentity location;


< prev index next >