comparison c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java @ 1420:44efca8a02d6

reformatting similar to other maxine projects (tabs, etc.)
author Lukas Stadler <lukas.stadler@oracle.com>
date Tue, 13 Jul 2010 11:47:55 -0700
parents 7bf6a77b9c5a
children 6223633ce7dd
comparison
equal deleted inserted replaced
1419:7bf6a77b9c5a 1420:44efca8a02d6
1 /* 1 /*
2 * Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved. 2 * Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.
3 * 3 *
4 * Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product 4 * Sun Microsystems, Inc. has intellectual property rights relating to technology embodied in the product that is
5 * that is described in this document. In particular, and without limitation, these intellectual property 5 * described in this document. In particular, and without limitation, these intellectual property rights may include one
6 * rights may include one or more of the U.S. patents listed at http://www.sun.com/patents and one or 6 * or more of the U.S. patents listed at http://www.sun.com/patents and one or more additional patents or pending patent
7 * more additional patents or pending patent applications in the U.S. and in other countries. 7 * applications in the U.S. and in other countries.
8 * 8 *
9 * U.S. Government Rights - Commercial software. Government users are subject to the Sun 9 * U.S. Government Rights - Commercial software. Government users are subject to the Sun Microsystems, Inc. standard
10 * Microsystems, Inc. standard license agreement and applicable provisions of the FAR and its 10 * license agreement and applicable provisions of the FAR and its supplements.
11 * supplements.
12 * 11 *
13 * Use is subject to license terms. Sun, Sun Microsystems, the Sun logo, Java and Solaris are trademarks or 12 * Use is subject to license terms. Sun, Sun Microsystems, the Sun logo, Java and Solaris are trademarks or registered
14 * registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. All SPARC trademarks 13 * trademarks of Sun Microsystems, Inc. in the U.S. and other countries. All SPARC trademarks are used under license and
15 * are used under license and are trademarks or registered trademarks of SPARC International, Inc. in the 14 * are trademarks or registered trademarks of SPARC International, Inc. in the U.S. and other countries.
16 * U.S. and other countries.
17 * 15 *
18 * UNIX is a registered trademark in the U.S. and other countries, exclusively licensed through X/Open 16 * UNIX is a registered trademark in the U.S. and other countries, exclusively licensed through X/Open Company, Ltd.
19 * Company, Ltd.
20 */ 17 */
21 package com.sun.hotspot.c1x; 18 package com.sun.hotspot.c1x;
22 19
20 import java.lang.reflect.Modifier;
23 import java.util.ArrayList; 21 import java.util.ArrayList;
24 import java.util.List; 22 import java.util.List;
25 23
26 import com.sun.cri.ci.CiKind; 24 import com.sun.cri.ci.CiKind;
27 import com.sun.cri.ri.RiField; 25 import com.sun.cri.ri.RiField;
28 import com.sun.cri.ri.RiMethod; 26 import com.sun.cri.ri.RiMethod;
27 import com.sun.cri.ri.RiRegisterConfig;
29 import com.sun.cri.ri.RiType; 28 import com.sun.cri.ri.RiType;
30 import com.sun.cri.ri.RiType.Representation; 29 import com.sun.cri.ri.RiType.Representation;
31 import com.sun.cri.xir.CiXirAssembler; 30 import com.sun.cri.xir.CiXirAssembler;
32 import com.sun.cri.xir.RiXirGenerator; 31 import com.sun.cri.xir.RiXirGenerator;
33 import com.sun.cri.xir.XirArgument; 32 import com.sun.cri.xir.XirArgument;
35 import com.sun.cri.xir.XirSnippet; 34 import com.sun.cri.xir.XirSnippet;
36 import com.sun.cri.xir.XirTemplate; 35 import com.sun.cri.xir.XirTemplate;
37 import com.sun.cri.xir.CiXirAssembler.XirOperand; 36 import com.sun.cri.xir.CiXirAssembler.XirOperand;
38 37
39 /** 38 /**
40 * 39 *
41 * @author Thomas Wuerthinger 40 * @author Thomas Wuerthinger
42 * 41 *
43 */ 42 */
44 public class HotSpotXirGenerator extends RiXirGenerator { 43 public class HotSpotXirGenerator extends RiXirGenerator {
45 44
46 private XirTemplate[] emptyTemplates = new XirTemplate[CiKind.values().length]; 45 private XirTemplate[] emptyTemplates = new XirTemplate[CiKind.values().length];
47 private final HotSpotVMConfig config; 46 private final HotSpotVMConfig config;
48 47
49 public HotSpotXirGenerator(HotSpotVMConfig config) { 48 public HotSpotXirGenerator(HotSpotVMConfig config) {
50 this.config = config; 49 this.config = config;
51 } 50 }
52 51
53 @Override 52 @Override
54 public List<XirTemplate> buildTemplates(CiXirAssembler asm) { 53 public List<XirTemplate> buildTemplates(CiXirAssembler asm) {
54 List<XirTemplate> templates = new ArrayList<XirTemplate>();
55 for (int i = 0; i < CiKind.values().length; i++) {
55 56
56 List<XirTemplate> templates = new ArrayList<XirTemplate>(); 57 CiKind curKind = CiKind.values()[i];
57 for (int i = 0; i < CiKind.values().length; i++) {
58 58
59 CiKind curKind = CiKind.values()[i]; 59 if (curKind == CiKind.Float || curKind == CiKind.Double)
60 continue;
60 61
61 if (curKind == CiKind.Float || curKind == CiKind.Double) 62 if (CiKind.values()[i] == CiKind.Void) {
62 continue; 63 asm.restart(CiKind.values()[i]);
64 emptyTemplates[i] = asm.finishTemplate("empty-" + CiKind.values()[i]);
65 } else {
66 asm.restart();
67 XirOperand result = asm.createTemp("result", CiKind.values()[i]);
68 emptyTemplates[i] = asm.finishTemplate(result, "empty-" + CiKind.values()[i]);
69 }
70 templates.add(emptyTemplates[i]);
71 }
63 72
64 if (CiKind.values()[i] == CiKind.Void) { 73 return templates;
65 asm.restart(CiKind.values()[i]); 74 }
66 emptyTemplates[i] = asm.finishTemplate("empty-"
67 + CiKind.values()[i]);
68 } else {
69 asm.restart();
70 XirOperand result = asm
71 .createTemp("result", CiKind.values()[i]);
72 emptyTemplates[i] = asm.finishTemplate(result, "empty-"
73 + CiKind.values()[i]);
74 }
75 templates.add(emptyTemplates[i]);
76 }
77 75
78 return templates; 76 @Override
79 } 77 public XirSnippet genArrayLength(XirSite site, XirArgument array) {
78 return new XirSnippet(emptyTemplates[CiKind.Int.ordinal()]);
79 }
80 80
81 @Override 81 @Override
82 public XirSnippet genArrayLength(XirSite site, XirArgument array) { 82 public XirSnippet genArrayLoad(XirSite site, XirArgument array, XirArgument index, XirArgument length, CiKind elementKind, RiType elementType) {
83 return new XirSnippet(emptyTemplates[CiKind.Int.ordinal()]); 83 return new XirSnippet(emptyTemplates[elementKind.ordinal()]);
84 } 84 }
85 85
86 @Override 86 @Override
87 public XirSnippet genArrayLoad(XirSite site, XirArgument array, 87 public XirSnippet genArrayStore(XirSite site, XirArgument array, XirArgument index, XirArgument length, XirArgument value, CiKind elementKind, RiType elementType) {
88 XirArgument index, XirArgument length, CiKind elementKind, 88 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]);
89 RiType elementType) { 89 }
90 return new XirSnippet(emptyTemplates[elementKind.ordinal()]);
91 }
92 90
93 @Override 91 @Override
94 public XirSnippet genArrayStore(XirSite site, XirArgument array, 92 public XirSnippet genCheckCast(XirSite site, XirArgument receiver, XirArgument hub, RiType type) {
95 XirArgument index, XirArgument length, XirArgument value, 93 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]);
96 CiKind elementKind, RiType elementType) { 94 }
97 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]);
98 }
99 95
100 @Override 96 @Override
101 public XirSnippet genCheckCast(XirSite site, XirArgument receiver, 97 public XirSnippet genEntrypoint(XirSite site) {
102 XirArgument hub, RiType type) { 98 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]);
103 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]); 99 }
104 }
105 100
106 @Override 101 @Override
107 public XirSnippet genEntrypoint(XirSite site) { 102 public XirSnippet genGetField(XirSite site, XirArgument receiver, RiField field) {
108 return null; 103 return new XirSnippet(emptyTemplates[field.kind().ordinal()]);
109 } 104 }
110 105
111 @Override 106 @Override
112 public XirSnippet genGetField(XirSite site, XirArgument receiver, 107 public XirSnippet genGetStatic(XirSite site, XirArgument staticTuple, RiField field) {
113 RiField field) { 108 return new XirSnippet(emptyTemplates[field.kind().ordinal()]);
114 return new XirSnippet(emptyTemplates[field.kind().ordinal()]); 109 }
115 }
116 110
117 @Override 111 @Override
118 public XirSnippet genGetStatic(XirSite site, XirArgument staticTuple, 112 public XirSnippet genInstanceOf(XirSite site, XirArgument receiver, XirArgument hub, RiType type) {
119 RiField field) { 113 return new XirSnippet(emptyTemplates[CiKind.Boolean.ordinal()]);
120 return new XirSnippet(emptyTemplates[field.kind().ordinal()]); 114 }
121 }
122 115
123 @Override 116 @Override
124 public XirSnippet genInstanceOf(XirSite site, XirArgument receiver, 117 public XirSnippet genIntrinsic(XirSite site, XirArgument[] arguments, RiMethod method) {
125 XirArgument hub, RiType type) { 118 return null;
126 return new XirSnippet(emptyTemplates[CiKind.Boolean.ordinal()]); 119 }
127 }
128 120
129 @Override 121 @Override
130 public XirSnippet genIntrinsic(XirSite site, XirArgument[] arguments, 122 public XirSnippet genInvokeInterface(XirSite site, XirArgument receiver, RiMethod method) {
131 RiMethod method) { 123 return new XirSnippet(emptyTemplates[CiKind.Word.ordinal()]);
132 return null; 124 }
133 }
134 125
135 @Override 126 @Override
136 public XirSnippet genInvokeInterface(XirSite site, XirArgument receiver, 127 public XirSnippet genInvokeSpecial(XirSite site, XirArgument receiver, RiMethod method) {
137 RiMethod method) { 128 return new XirSnippet(emptyTemplates[CiKind.Word.ordinal()]);
138 return new XirSnippet(emptyTemplates[CiKind.Word.ordinal()]); 129 }
139 }
140 130
141 @Override 131 @Override
142 public XirSnippet genInvokeSpecial(XirSite site, XirArgument receiver, 132 public XirSnippet genInvokeStatic(XirSite site, RiMethod method) {
143 RiMethod method) { 133 return new XirSnippet(emptyTemplates[CiKind.Word.ordinal()]);
144 return new XirSnippet(emptyTemplates[CiKind.Word.ordinal()]); 134 }
145 }
146 135
147 @Override 136 @Override
148 public XirSnippet genInvokeStatic(XirSite site, RiMethod method) { 137 public XirSnippet genInvokeVirtual(XirSite site, XirArgument receiver, RiMethod method) {
149 return new XirSnippet(emptyTemplates[CiKind.Word.ordinal()]); 138 return new XirSnippet(emptyTemplates[CiKind.Word.ordinal()]);
150 } 139 }
151 140
152 @Override 141 @Override
153 public XirSnippet genInvokeVirtual(XirSite site, XirArgument receiver, 142 public XirSnippet genMonitorEnter(XirSite site, XirArgument receiver) {
154 RiMethod method) { 143 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]);
155 return new XirSnippet(emptyTemplates[CiKind.Word.ordinal()]); 144 }
156 }
157 145
158 @Override 146 @Override
159 public XirSnippet genMonitorEnter(XirSite site, XirArgument receiver) { 147 public XirSnippet genMonitorExit(XirSite site, XirArgument receiver) {
160 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]); 148 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]);
161 } 149 }
162 150
163 @Override 151 @Override
164 public XirSnippet genMonitorExit(XirSite site, XirArgument receiver) { 152 public XirSnippet genNewArray(XirSite site, XirArgument length, CiKind elementKind, RiType componentType, RiType arrayType) {
165 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]); 153 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]);
166 } 154 }
167 155
168 @Override 156 @Override
169 public XirSnippet genNewArray(XirSite site, XirArgument length, 157 public XirSnippet genNewInstance(XirSite site, RiType type) {
170 CiKind elementKind, RiType componentType, RiType arrayType) { 158 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]);
171 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]); 159 }
172 }
173 160
174 @Override 161 @Override
175 public XirSnippet genNewInstance(XirSite site, RiType type) { 162 public XirSnippet genNewMultiArray(XirSite site, XirArgument[] lengths, RiType type) {
176 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]); 163 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]);
177 } 164 }
178 165
179 @Override 166 @Override
180 public XirSnippet genNewMultiArray(XirSite site, XirArgument[] lengths, 167 public XirSnippet genPutField(XirSite site, XirArgument receiver, RiField field, XirArgument value) {
181 RiType type) { 168 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]);
182 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]); 169 }
183 }
184 170
185 @Override 171 @Override
186 public XirSnippet genPutField(XirSite site, XirArgument receiver, 172 public XirSnippet genPutStatic(XirSite site, XirArgument staticTuple, RiField field, XirArgument value) {
187 RiField field, XirArgument value) { 173 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]);
188 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]); 174 }
189 }
190 175
191 @Override 176 @Override
192 public XirSnippet genPutStatic(XirSite site, XirArgument staticTuple, 177 public XirSnippet genResolveClass(XirSite site, RiType type, Representation representation) {
193 RiField field, XirArgument value) { 178 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]);
194 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]); 179 }
195 }
196 180
197 @Override 181 @Override
198 public XirSnippet genResolveClass(XirSite site, RiType type, 182 public XirSnippet genSafepoint(XirSite site) {
199 Representation representation) { 183 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]);
200 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]); 184 }
201 }
202 185
203 @Override 186 @Override
204 public XirSnippet genSafepoint(XirSite site) { 187 public XirSnippet genExceptionObject(XirSite site) {
205 return new XirSnippet(emptyTemplates[CiKind.Void.ordinal()]); 188 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]);
206 } 189 }
207
208 @Override
209 public XirSnippet genExceptionObject(XirSite site) {
210 return new XirSnippet(emptyTemplates[CiKind.Object.ordinal()]);
211 }
212 190
213 } 191 }