Mercurial > hg > graal-jvmci-8
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)); |