< prev index next >

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

Print this page




 251         if (factoryOperation != null) {
 252             switch (factoryOperation.opcode()) {
 253                 case ZERO:
 254                     assert args.length == 0;
 255                     b.addPush(returnKind, forIntegerKind(wordKind, 0L));
 256                     return;
 257 
 258                 case FROM_UNSIGNED:
 259                     assert args.length == 1;
 260                     b.push(returnKind, fromUnsigned(b, args[0]));
 261                     return;
 262 
 263                 case FROM_SIGNED:
 264                     assert args.length == 1;
 265                     b.push(returnKind, fromSigned(b, args[0]));
 266                     return;
 267             }
 268         }
 269 
 270         Word.Operation operation = BridgeMethodUtils.getAnnotation(Word.Operation.class, wordMethod);



 271         switch (operation.opcode()) {
 272             case NODE_CLASS:
 273                 assert args.length == 2;
 274                 ValueNode left = args[0];
 275                 ValueNode right = operation.rightOperandIsInt() ? toUnsigned(b, args[1], JavaKind.Int) : fromSigned(b, args[1]);
 276 
 277                 b.addPush(returnKind, createBinaryNodeInstance(operation.node(), left, right));
 278                 break;
 279 
 280             case COMPARISON:
 281                 assert args.length == 2;
 282                 b.push(returnKind, comparisonOp(b, operation.condition(), args[0], fromSigned(b, args[1])));
 283                 break;
 284 
 285             case IS_NULL:
 286                 assert args.length == 1;
 287                 b.push(returnKind, comparisonOp(b, Condition.EQ, args[0], ConstantNode.forIntegerKind(wordKind, 0L)));
 288                 break;
 289 
 290             case IS_NON_NULL:




 251         if (factoryOperation != null) {
 252             switch (factoryOperation.opcode()) {
 253                 case ZERO:
 254                     assert args.length == 0;
 255                     b.addPush(returnKind, forIntegerKind(wordKind, 0L));
 256                     return;
 257 
 258                 case FROM_UNSIGNED:
 259                     assert args.length == 1;
 260                     b.push(returnKind, fromUnsigned(b, args[0]));
 261                     return;
 262 
 263                 case FROM_SIGNED:
 264                     assert args.length == 1;
 265                     b.push(returnKind, fromSigned(b, args[0]));
 266                     return;
 267             }
 268         }
 269 
 270         Word.Operation operation = BridgeMethodUtils.getAnnotation(Word.Operation.class, wordMethod);
 271         if (operation == null) {
 272             throw bailout(b, "Cannot call method on a word value: " + wordMethod.format("%H.%n(%p)"));
 273         }
 274         switch (operation.opcode()) {
 275             case NODE_CLASS:
 276                 assert args.length == 2;
 277                 ValueNode left = args[0];
 278                 ValueNode right = operation.rightOperandIsInt() ? toUnsigned(b, args[1], JavaKind.Int) : fromSigned(b, args[1]);
 279 
 280                 b.addPush(returnKind, createBinaryNodeInstance(operation.node(), left, right));
 281                 break;
 282 
 283             case COMPARISON:
 284                 assert args.length == 2;
 285                 b.push(returnKind, comparisonOp(b, operation.condition(), args[0], fromSigned(b, args[1])));
 286                 break;
 287 
 288             case IS_NULL:
 289                 assert args.length == 1;
 290                 b.push(returnKind, comparisonOp(b, Condition.EQ, args[0], ConstantNode.forIntegerKind(wordKind, 0L)));
 291                 break;
 292 
 293             case IS_NON_NULL:


< prev index next >