package org.codehaus.groovy.gjit.db; import org.codehaus.groovy.runtime.callsite.CallSite; import org.objectweb.asm.Type; import groovy.lang.MetaMethod; public class SiteTypeHelper { public static void record(MetaMethod metaMethod, Class<?> clazz, CallSite site) { // System.out.println("==============="); // System.out.println("ReturnType: " + metaMethod.getReturnType()); // System.out.println("Declaring Class: " + metaMethod.getDeclaringClass()); // System.out.println("Name: " + metaMethod.getName()); // System.out.println("Signature: " + metaMethod.getSignature()); // System.out.println("Class: " + clazz); // System.out.println("Site Name: " + site.getName()); // System.out.println("Site Index: " + site.getIndex()); // System.out.println("==============="); } public static Object record(Object returnObject, CallSite site) { // System.out.println("Site Owner: " + site.getArray().owner); // System.out.println("Site Name: " + site.getName()); // System.out.println("Site Index: " + site.getIndex()); // if(returnObject == null) { // System.out.println("return type: null"); // } else { // System.out.println("return type: " + returnObject.getClass()); // } String name = Type.getInternalName(site.getArray().owner.getClass()); try { ClassEntry c = SiteTypePersistentCache.v().find(name); if(c!=null) { c.add(site.getIndex(), Type.getInternalName(returnObject.getClass())); } } catch(Throwable e) { } return returnObject; } }