Mercurial > hg > graal-jvmci-8
comparison c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java @ 2108:50b45e2d9725
Fixed bug in getClass() XIR snippet
Null check needs separate PC position. Otherwise there's a problem if the null check is immediately after a call instruction.
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Wed, 16 Feb 2011 13:38:33 +0100 |
parents | c0b1d6a44a02 |
children | eed52202caea |
comparison
equal
deleted
inserted
replaced
2107:e5ba25730d9b | 2108:50b45e2d9725 |
---|---|
815 private SimpleTemplates getClassTemplates = new SimpleTemplates() { | 815 private SimpleTemplates getClassTemplates = new SimpleTemplates() { |
816 @Override | 816 @Override |
817 protected XirTemplate create(CiXirAssembler asm, long flags) { | 817 protected XirTemplate create(CiXirAssembler asm, long flags) { |
818 XirOperand result = asm.restart(CiKind.Object); | 818 XirOperand result = asm.restart(CiKind.Object); |
819 XirOperand object = asm.createInputParameter("object", CiKind.Object); | 819 XirOperand object = asm.createInputParameter("object", CiKind.Object); |
820 if (is(NULL_CHECK, flags)) { | |
821 asm.nop(1); | |
822 } | |
820 asm.pload(CiKind.Object, result, object, asm.i(config.hubOffset), is(NULL_CHECK, flags)); | 823 asm.pload(CiKind.Object, result, object, asm.i(config.hubOffset), is(NULL_CHECK, flags)); |
821 asm.pload(CiKind.Object, result, result, asm.i(config.classMirrorOffset), false); | 824 asm.pload(CiKind.Object, result, result, asm.i(config.classMirrorOffset), false); |
822 return asm.finishTemplate("currentThread"); | 825 return asm.finishTemplate("currentThread"); |
823 } | 826 } |
824 }; | 827 }; |