Mercurial > hg > truffle
comparison c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java @ 2183:eed52202caea
Added parameter to array store exception runtime call (new in HotSpot).
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Wed, 16 Feb 2011 15:13:34 +0100 |
parents | 50b45e2d9725 |
children | 2a36994d0967 |
comparison
equal
deleted
inserted
replaced
2182:9569fdf936ff | 2183:eed52202caea |
---|---|
994 assert kind == CiKind.Object; | 994 assert kind == CiKind.Object; |
995 useRegisters(asm, AMD64.rax); | 995 useRegisters(asm, AMD64.rax); |
996 asm.bindOutOfLine(slowStoreCheck); | 996 asm.bindOutOfLine(slowStoreCheck); |
997 checkSubtype(asm, temp, valueHub, compHub); | 997 checkSubtype(asm, temp, valueHub, compHub); |
998 asm.jneq(store, temp, asm.w(0)); | 998 asm.jneq(store, temp, asm.w(0)); |
999 XirOperand scratch = asm.createRegisterTemp("scratch", CiKind.Object, AMD64.r10); | |
1000 asm.mov(scratch, valueHub); | |
999 asm.callRuntime(config.throwArrayStoreException, null); | 1001 asm.callRuntime(config.throwArrayStoreException, null); |
1000 asm.jmp(store); | 1002 asm.jmp(store); |
1001 } | 1003 } |
1002 | 1004 |
1003 return asm.finishTemplate("arraycopy<" + kind + ">"); | 1005 return asm.finishTemplate("arraycopy<" + kind + ">"); |
1082 if (is(STORE_CHECK, flags) && kind == CiKind.Object) { | 1084 if (is(STORE_CHECK, flags) && kind == CiKind.Object) { |
1083 useRegisters(asm, AMD64.rax); | 1085 useRegisters(asm, AMD64.rax); |
1084 asm.bindOutOfLine(slowStoreCheck); | 1086 asm.bindOutOfLine(slowStoreCheck); |
1085 checkSubtype(asm, temp, valueHub, compHub); | 1087 checkSubtype(asm, temp, valueHub, compHub); |
1086 asm.jneq(store, temp, asm.w(0)); | 1088 asm.jneq(store, temp, asm.w(0)); |
1089 XirOperand scratch = asm.createRegisterTemp("scratch", CiKind.Object, AMD64.r10); | |
1090 asm.mov(scratch, valueHub); | |
1087 asm.callRuntime(config.throwArrayStoreException, null); | 1091 asm.callRuntime(config.throwArrayStoreException, null); |
1088 asm.jmp(store); | 1092 asm.jmp(store); |
1089 } | 1093 } |
1090 return asm.finishTemplate("arraystore<" + kind + ">"); | 1094 return asm.finishTemplate("arraystore<" + kind + ">"); |
1091 } | 1095 } |