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: |