Mercurial > hg > graal-jvmci-8
diff c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTargetMethod.java @ 1427:149b1d2316de
basic invokeinterface and invokevirtual support
author | Lukas Stadler <lukas.stadler@oracle.com> |
---|---|
date | Wed, 18 Aug 2010 16:47:06 -0700 |
parents | 760213a60e8b |
children | abc670a709dc |
line wrap: on
line diff
--- a/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTargetMethod.java Wed Aug 18 11:44:04 2010 -0700 +++ b/c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotTargetMethod.java Wed Aug 18 16:47:06 2010 -0700 @@ -20,7 +20,7 @@ import java.util.*; import com.sun.cri.ci.*; -import com.sun.cri.ci.CiTargetMethod.Site; +import com.sun.cri.ci.CiTargetMethod.*; /** * CiTargetMethod augmented with HotSpot-specific information. @@ -54,21 +54,27 @@ private Site[] getSortedSites(CiTargetMethod target) { List<?>[] lists = new List<?>[] {target.directCalls, target.indirectCalls, target.safepoints, target.dataReferences, target.exceptionHandlers, target.marks}; int count = 0; - for (List<?> list: lists) { + for (List<?> list : lists) { count += list.size(); } Site[] result = new Site[count]; int pos = 0; - for (List<?> list: lists) { - for (Object elem: list) { - result[pos++] = (Site)elem; + for (List<?> list : lists) { + for (Object elem : list) { + result[pos++] = (Site) elem; } } Arrays.sort(result, new Comparator<Site>() { + public int compare(Site s1, Site s2) { + if (s1.pcOffset == s2.pcOffset && (s1 instanceof Mark ^ s2 instanceof Mark)) { + return s1 instanceof Mark ? -1 : 1; + } return s1.pcOffset - s2.pcOffset; } }); + for(Site site : result) + System.out.println(site.pcOffset + ": " + site); return result; }