Mercurial > hg > graal-jvmci-8
comparison graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotBackend.java @ 13520:fb7b39f07232
Embed compressed constants when possible and use more efficient patterns for encoding
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Mon, 06 Jan 2014 17:19:18 -0800 |
parents | da0851712519 |
children | fd267819dbdb |
comparison
equal
deleted
inserted
replaced
13519:1ceb90be7bac | 13520:fb7b39f07232 |
---|---|
255 Register receiver = asRegister(cc.getArgument(0)); | 255 Register receiver = asRegister(cc.getArgument(0)); |
256 AMD64Address src = new AMD64Address(receiver, config.hubOffset); | 256 AMD64Address src = new AMD64Address(receiver, config.hubOffset); |
257 | 257 |
258 if (config.useCompressedClassPointers) { | 258 if (config.useCompressedClassPointers) { |
259 Register register = r10; | 259 Register register = r10; |
260 AMD64HotSpotMove.decodeKlassPointer(asm, register, providers.getRegisters().getHeapBaseRegister(), src, config.narrowKlassBase, config.narrowOopBase, config.narrowKlassShift, | 260 AMD64HotSpotMove.decodeKlassPointer(asm, register, providers.getRegisters().getHeapBaseRegister(), src, config.getKlassEncoding()); |
261 config.logKlassAlignment); | 261 if (config.narrowKlassBase != 0) { |
262 // The heap base register was destroyed above, so restore it | |
263 asm.movq(providers.getRegisters().getHeapBaseRegister(), config.narrowOopBase); | |
264 } | |
262 asm.cmpq(inlineCacheKlass, register); | 265 asm.cmpq(inlineCacheKlass, register); |
263 } else { | 266 } else { |
264 asm.cmpq(inlineCacheKlass, src); | 267 asm.cmpq(inlineCacheKlass, src); |
265 } | 268 } |
266 AMD64Call.directConditionalJmp(crb, asm, getForeignCalls().lookupForeignCall(IC_MISS_HANDLER), ConditionFlag.NotEqual); | 269 AMD64Call.directConditionalJmp(crb, asm, getForeignCalls().lookupForeignCall(IC_MISS_HANDLER), ConditionFlag.NotEqual); |