Mercurial > hg > graal-compiler
diff c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotVMConfig.java @ 1423:760213a60e8b
* rewrite of the code installation
* partial support for safepoints
* macro-based CiTargetMethod interface
* code stub support
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Mon, 16 Aug 2010 18:59:36 -0700 |
parents | 3483ec571caf |
children | 98fffb304868 |
line wrap: on
line diff
--- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotVMConfig.java Mon Aug 02 15:44:38 2010 -0700 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotVMConfig.java Mon Aug 16 18:59:36 2010 -0700 @@ -17,12 +17,14 @@ */ package com.sun.hotspot.c1x; +import com.sun.cri.ci.*; + /** * Used to communicate configuration details, runtime offsets, etc. to c1x upon compileMethod. * * @author Lukas Stadler */ -public class HotSpotVMConfig { +public class HotSpotVMConfig implements CompilerObject { // os information, register layout, code generation, ... public boolean windowsOs; @@ -33,19 +35,45 @@ public int stackShadowPages; public int hubOffset; public int arrayLengthOffset; + public int[] arrayOffsets; + public int arrayClassElementOffset; // runtime stubs public long instanceofStub; public long debugStub; + public long resolveStaticCallStub; public void check() { assert vmPageSize >= 16; assert codeEntryAlignment > 0; assert stackShadowPages > 0; - assert instanceofStub != 0; - assert debugStub != 0; - System.out.println("Config::debugStub = " + Long.toHexString(debugStub)); - System.out.println("Config::instanceofStub = " + Long.toHexString(instanceofStub)); + } + + public int getArrayOffset(CiKind kind) { + return arrayOffsets[getKindNumber(kind)]; + } + + private int getKindNumber(CiKind kind) { + if (kind == CiKind.Boolean) + return 0; + else if (kind == CiKind.Byte) + return 1; + else if (kind == CiKind.Short) + return 2; + else if (kind == CiKind.Char) + return 3; + else if (kind == CiKind.Int) + return 4; + else if (kind == CiKind.Float) + return 5; + else if (kind == CiKind.Long) + return 6; + else if (kind == CiKind.Double) + return 7; + else if (kind == CiKind.Object) + return 8; + else + throw new RuntimeException(kind + " is not a Java kind"); } }