comparison graal/com.oracle.graal.word/src/com/oracle/graal/word/phases/WordTypeRewriterPhase.java @ 7904:c8f2002d2194

reintroduce default Word read/write operations, more tests
author Lukas Stadler <lukas.stadler@jku.at>
date Thu, 28 Feb 2013 12:07:59 +0100
parents f19c4d447e73
children 0db1cb049a78
comparison
equal deleted inserted replaced
7903:f19c4d447e73 7904:c8f2002d2194
136 assert arguments.size() == 1; 136 assert arguments.size() == 1;
137 replace(invoke, graph.unique(new XorNode(wordKind, arguments.get(0), ConstantNode.forIntegerKind(wordKind, -1, graph)))); 137 replace(invoke, graph.unique(new XorNode(wordKind, arguments.get(0), ConstantNode.forIntegerKind(wordKind, -1, graph))));
138 break; 138 break;
139 139
140 case READ: 140 case READ:
141 assert arguments.size() == 3; 141 assert arguments.size() == 2 || arguments.size() == 3;
142 Kind readKind = asKind(callTargetNode.returnType()); 142 Kind readKind = asKind(callTargetNode.returnType());
143 replace(invoke, readOp(graph, arguments.get(0), arguments.get(1), invoke, readKind, arguments.get(2).asConstant().asObject())); 143 Object readLocation = arguments.size() == 2 ? LocationNode.UNKNOWN_LOCATION : arguments.get(2).asConstant().asObject();
144 replace(invoke, readOp(graph, arguments.get(0), arguments.get(1), invoke, readKind, readLocation));
144 break; 145 break;
145 146
146 case WRITE: 147 case WRITE:
147 assert arguments.size() == 4; 148 assert arguments.size() == 3 || arguments.size() == 4;
148 Kind writeKind = asKind(targetMethod.getSignature().getParameterType(1, targetMethod.getDeclaringClass())); 149 Kind writeKind = asKind(targetMethod.getSignature().getParameterType(1, targetMethod.getDeclaringClass()));
149 replace(invoke, writeOp(graph, arguments.get(0), arguments.get(1), arguments.get(2), invoke, writeKind, arguments.get(3).asConstant().asObject())); 150 Object writeLocation = arguments.size() == 3 ? LocationNode.ANY_LOCATION : arguments.get(3).asConstant().asObject();
151 replace(invoke, writeOp(graph, arguments.get(0), arguments.get(1), arguments.get(2), invoke, writeKind, writeLocation));
150 break; 152 break;
151 153
152 case ZERO: 154 case ZERO:
153 assert arguments.size() == 0; 155 assert arguments.size() == 0;
154 replace(invoke, ConstantNode.forIntegerKind(wordKind, 0L, graph)); 156 replace(invoke, ConstantNode.forIntegerKind(wordKind, 0L, graph));