Mercurial > hg > graal-jvmci-8
diff c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTargetMethod.java @ 1429:abc670a709dc
* -XX:TraceC1X=0...5 controls the native c1x tracing
* -Dc1x.debug=true turns on the logging proxies and lots of log output on the java side
* provide more information about types to the compiler (type hierarchy, etc)
* provide exception handler tables to the compiler
* add exception handlers to the nmethod
* correct implementation of ExceptionObject
* exception handling/unwinding entry points
* modified versions of handle/unwind exception stubs using standard calling conventions
* exception throwing
* implicit null pointer exception, implicit div by 0 exception
* arraystore/classcast/arrayindex exceptions
* checkcast implementation
* newarray, anewarray, multinewarray implementation
* correct new instance initialization
* access to java class mirrors (for ldc)
* unresolved methods
* class resolving - class patching (asssembly prototype copying)
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Tue, 31 Aug 2010 22:13:30 -0700 |
parents | 149b1d2316de |
children | 9e5e83ca2259 |
line wrap: on
line diff
--- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTargetMethod.java Thu Aug 19 14:34:52 2010 -0700 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTargetMethod.java Tue Aug 31 22:13:30 2010 -0700 @@ -21,6 +21,7 @@ import com.sun.cri.ci.*; import com.sun.cri.ci.CiTargetMethod.*; +import com.sun.hotspot.c1x.logging.*; /** * CiTargetMethod augmented with HotSpot-specific information. @@ -30,17 +31,23 @@ public class HotSpotTargetMethod implements CompilerObject { public final CiTargetMethod targetMethod; - public final HotSpotMethod method; // used only for methods - public final String name; // used only for stubs + public final HotSpotMethodResolved method; // used only for methods + public final String name; // used only for stubs public final Site[] sites; + public final ExceptionHandler[] exceptionHandlers; - private HotSpotTargetMethod(HotSpotMethod method, CiTargetMethod targetMethod) { + private HotSpotTargetMethod(HotSpotMethodResolved method, CiTargetMethod targetMethod) { this.method = method; this.targetMethod = targetMethod; this.name = null; sites = getSortedSites(targetMethod); + if (targetMethod.exceptionHandlers == null) { + exceptionHandlers = null; + } else { + exceptionHandlers = targetMethod.exceptionHandlers.toArray(new ExceptionHandler[targetMethod.exceptionHandlers.size()]); + } } private HotSpotTargetMethod(CiTargetMethod targetMethod, String name) { @@ -49,10 +56,12 @@ this.name = name; sites = getSortedSites(targetMethod); + assert targetMethod.exceptionHandlers == null || targetMethod.exceptionHandlers.size() == 0; + exceptionHandlers = null; } private Site[] getSortedSites(CiTargetMethod target) { - List<?>[] lists = new List<?>[] {target.directCalls, target.indirectCalls, target.safepoints, target.dataReferences, target.exceptionHandlers, target.marks}; + List<?>[] lists = new List<?>[] { target.directCalls, target.indirectCalls, target.safepoints, target.dataReferences, target.marks}; int count = 0; for (List<?> list : lists) { count += list.size(); @@ -73,12 +82,13 @@ return s1.pcOffset - s2.pcOffset; } }); - for(Site site : result) - System.out.println(site.pcOffset + ": " + site); + if (Logger.ENABLED) + for (Site site : result) + Logger.log(site.pcOffset + ": " + site); return result; } - public static void installMethod(HotSpotMethod method, CiTargetMethod targetMethod) { + public static void installMethod(HotSpotMethodResolved method, CiTargetMethod targetMethod) { Compiler.getVMEntries().installMethod(new HotSpotTargetMethod(method, targetMethod)); }