comparison graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackendFactory.java @ 19254:835e950b38b9

removed vestige usages of Assumptions independent of a StructuredGraph
author Doug Simon <doug.simon@oracle.com>
date Wed, 11 Feb 2015 13:39:33 +0100
parents c240024b32b3
children fcb426a54eed
comparison
equal deleted inserted replaced
19253:2caf12d746a3 19254:835e950b38b9
150 foreignCalls = createForeignCalls(runtime, metaAccess, codeCache, nativeABICallerSaveRegisters); 150 foreignCalls = createForeignCalls(runtime, metaAccess, codeCache, nativeABICallerSaveRegisters);
151 } 151 }
152 try (InitTimer rt = timer("create Lowerer provider")) { 152 try (InitTimer rt = timer("create Lowerer provider")) {
153 lowerer = createLowerer(runtime, metaAccess, foreignCalls, registers, target); 153 lowerer = createLowerer(runtime, metaAccess, foreignCalls, registers, target);
154 } 154 }
155 // Replacements cannot have speculative optimizations since they have
156 // to be valid for the entire run of the VM.
157 Assumptions assumptions = new Assumptions(false);
158 Providers p = new Providers(metaAccess, codeCache, constantReflection, foreignCalls, lowerer, null, new HotSpotStampProvider()); 155 Providers p = new Providers(metaAccess, codeCache, constantReflection, foreignCalls, lowerer, null, new HotSpotStampProvider());
159 try (InitTimer rt = timer("create SnippetReflection provider")) { 156 try (InitTimer rt = timer("create SnippetReflection provider")) {
160 snippetReflection = createSnippetReflection(runtime); 157 snippetReflection = createSnippetReflection(runtime);
161 } 158 }
162 try (InitTimer rt = timer("create Replacements provider")) { 159 try (InitTimer rt = timer("create Replacements provider")) {
163 replacements = createReplacements(runtime, assumptions, p, snippetReflection); 160 replacements = createReplacements(runtime, p, snippetReflection);
164 } 161 }
165 try (InitTimer rt = timer("create Disassembler provider")) { 162 try (InitTimer rt = timer("create Disassembler provider")) {
166 disassembler = createDisassembler(runtime); 163 disassembler = createDisassembler(runtime);
167 } 164 }
168 try (InitTimer rt = timer("create Suites provider")) { 165 try (InitTimer rt = timer("create Suites provider")) {
185 182
186 protected HotSpotDisassemblerProvider createDisassembler(HotSpotGraalRuntimeProvider runtime) { 183 protected HotSpotDisassemblerProvider createDisassembler(HotSpotGraalRuntimeProvider runtime) {
187 return new HotSpotDisassemblerProvider(runtime); 184 return new HotSpotDisassemblerProvider(runtime);
188 } 185 }
189 186
190 protected Replacements createReplacements(HotSpotGraalRuntimeProvider runtime, Assumptions assumptions, Providers p, SnippetReflectionProvider snippetReflection) { 187 protected Replacements createReplacements(HotSpotGraalRuntimeProvider runtime, Providers p, SnippetReflectionProvider snippetReflection) {
191 return new HotSpotReplacementsImpl(p, snippetReflection, runtime.getConfig(), assumptions, p.getCodeCache().getTarget()); 188 return new HotSpotReplacementsImpl(p, snippetReflection, runtime.getConfig(), p.getCodeCache().getTarget());
192 } 189 }
193 190
194 protected AMD64HotSpotForeignCallsProvider createForeignCalls(HotSpotGraalRuntimeProvider runtime, HotSpotMetaAccessProvider metaAccess, HotSpotCodeCacheProvider codeCache, 191 protected AMD64HotSpotForeignCallsProvider createForeignCalls(HotSpotGraalRuntimeProvider runtime, HotSpotMetaAccessProvider metaAccess, HotSpotCodeCacheProvider codeCache,
195 Value[] nativeABICallerSaveRegisters) { 192 Value[] nativeABICallerSaveRegisters) {
196 return new AMD64HotSpotForeignCallsProvider(runtime, metaAccess, codeCache, nativeABICallerSaveRegisters); 193 return new AMD64HotSpotForeignCallsProvider(runtime, metaAccess, codeCache, nativeABICallerSaveRegisters);
249 callerSave.remove(AMD64.xmm14); 246 callerSave.remove(AMD64.xmm14);
250 callerSave.remove(AMD64.xmm15); 247 callerSave.remove(AMD64.xmm15);
251 } else { 248 } else {
252 /* 249 /*
253 * System V Application Binary Interface, AMD64 Architecture Processor Supplement 250 * System V Application Binary Interface, AMD64 Architecture Processor Supplement
254 * 251 *
255 * Draft Version 0.96 252 * Draft Version 0.96
256 * 253 *
257 * http://www.uclibc.org/docs/psABI-x86_64.pdf 254 * http://www.uclibc.org/docs/psABI-x86_64.pdf
258 * 255 *
259 * 3.2.1 256 * 3.2.1
260 * 257 *
261 * ... 258 * ...
262 * 259 *
263 * This subsection discusses usage of each register. Registers %rbp, %rbx and %r12 260 * This subsection discusses usage of each register. Registers %rbp, %rbx and %r12
264 * through %r15 "belong" to the calling function and the called function is required to 261 * through %r15 "belong" to the calling function and the called function is required to
265 * preserve their values. In other words, a called function must preserve these 262 * preserve their values. In other words, a called function must preserve these
266 * registers' values for its caller. Remaining registers "belong" to the called 263 * registers' values for its caller. Remaining registers "belong" to the called
267 * function. If a calling function wants to preserve such a register value across a 264 * function. If a calling function wants to preserve such a register value across a