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);