# HG changeset patch # User Doug Simon # Date 1288651837 -3600 # Node ID 4d1d3bd140f9b72f9bc375fc057052912c96508d # Parent d0c8d3a2a7e83a70d74a7d5afb4d78405c10ed5d Updated for changes in CRI. diff -r d0c8d3a2a7e8 -r 4d1d3bd140f9 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRegisterConfig.java --- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRegisterConfig.java Fri Oct 29 18:14:17 2010 +0200 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotRegisterConfig.java Mon Nov 01 23:50:37 2010 +0100 @@ -24,15 +24,11 @@ import java.util.*; -import com.sun.c1x.target.amd64.AMD64; -import com.sun.c1x.util.Util; -import com.sun.cri.ci.CiCallingConvention; -import com.sun.cri.ci.CiKind; -import com.sun.cri.ci.CiRegister; -import com.sun.cri.ci.CiStackSlot; -import com.sun.cri.ci.CiTarget; -import com.sun.cri.ci.CiValue; -import com.sun.cri.ci.CiRegister.*; +import com.sun.c1x.target.amd64.*; +import com.sun.c1x.util.*; +import com.sun.cri.ci.*; +import com.sun.cri.ci.CiCallingConvention.Type; +import com.sun.cri.ci.CiRegister.RegisterFlag; import com.sun.cri.ri.*; /** @@ -69,6 +65,7 @@ private final CiRegister[] generalParameterRegisters; private final CiRegister[] xmmParameterRegisters = {xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7}; + private final CiRegister[] allParameterRegisters; public HotSpotRegisterConfig(HotSpotVMConfig config) { if (config.windowsOs) { @@ -77,6 +74,8 @@ generalParameterRegisters = new CiRegister[] {rsi, rdx, rcx, r8, r9, rdi}; } attributesMap = RiRegisterAttributes.createMap(this, AMD64.allRegisters); + allParameterRegisters = Arrays.copyOf(generalParameterRegisters, generalParameterRegisters.length + xmmParameterRegisters.length); + System.arraycopy(xmmParameterRegisters, 0, allParameterRegisters, generalParameterRegisters.length, xmmParameterRegisters.length); } @Override @@ -97,8 +96,15 @@ } @Override - public CiCallingConvention getJavaCallingConvention(CiKind[] parameters, boolean outgoing, CiTarget target) { - return callingConvention(parameters, outgoing, target); + public CiCallingConvention getCallingConvention(Type type, CiKind[] parameters, boolean outgoing, CiTarget target) { + if (type == Type.Native) { + throw new UnsupportedOperationException(); + } + return callingConvention(parameters, type == Type.Runtime ? true : outgoing, target); + } + + public CiRegister[] getCallingConventionRegisters(Type type) { + return allParameterRegisters; } private CiCallingConvention callingConvention(CiKind[] types, boolean outgoing, CiTarget target) { @@ -147,11 +153,6 @@ } @Override - public CiCallingConvention getNativeCallingConvention(CiKind[] parameters, boolean outgoing, CiTarget target) { - throw new UnsupportedOperationException(); - } - - @Override public CiRegister getReturnRegister(CiKind kind) { switch (kind) { case Boolean: @@ -175,11 +176,6 @@ } @Override - public CiCallingConvention getRuntimeCallingConvention(CiKind[] parameters, CiTarget target) { - return callingConvention(parameters, true, target); - } - - @Override public CiRegister getScratchRegister() { return r10; } diff -r d0c8d3a2a7e8 -r 4d1d3bd140f9 c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java --- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java Fri Oct 29 18:14:17 2010 +0200 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java Mon Nov 01 23:50:37 2010 +0100 @@ -20,6 +20,9 @@ */ package com.sun.hotspot.c1x; +import static com.sun.cri.ci.CiCallingConvention.Type.*; +import static com.sun.hotspot.c1x.TemplateFlag.*; + import java.lang.reflect.*; import java.util.*; import java.util.concurrent.*; @@ -30,8 +33,10 @@ import com.sun.cri.ri.*; import com.sun.cri.ri.RiType.Representation; import com.sun.cri.xir.*; -import com.sun.cri.xir.CiXirAssembler.*; -import static com.sun.hotspot.c1x.TemplateFlag.*; +import com.sun.cri.xir.CiXirAssembler.XirLabel; +import com.sun.cri.xir.CiXirAssembler.XirMark; +import com.sun.cri.xir.CiXirAssembler.XirOperand; +import com.sun.cri.xir.CiXirAssembler.XirParameter; /** * @@ -91,7 +96,7 @@ XirOperand temp = asm.createRegister("temp (r10)", CiKind.Word, AMD64.r10); XirOperand cache = asm.createRegister("cache (rax)", CiKind.Word, AMD64.rax); - CiCallingConvention conventions = registerConfig.getJavaCallingConvention(new CiKind[] {CiKind.Object}, false, target); + CiCallingConvention conventions = registerConfig.getCallingConvention(Java, new CiKind[] {CiKind.Object}, false, target); XirOperand receiver = asm.createRegister("cache (rax)", CiKind.Word, conventions.locations[0].asRegister()); asm.pload(CiKind.Word, temp, receiver, asm.i(config.hubOffset), false);