public Object call(Object receiver, Object[] args) throws Throwable { if (receiver != null && info.hasPerInstanceMetaClasses()) { try { return InvokerHelper.getMetaClass(receiver).invokeMethod(receiver, name, args); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } } else { return CallSiteArray.defaultCall(this, receiver, args); } } }
private static CallSite createPojoSite(CallSite callSite, Object receiver, Object[] args) { final Class klazz = receiver.getClass(); MetaClass metaClass = InvokerHelper.getMetaClass(receiver); if (!GroovyCategorySupport.hasCategoryInCurrentThread() && metaClass instanceof MetaClassImpl) { final MetaClassImpl mci = (MetaClassImpl) metaClass; final ClassInfo info = mci.getTheCachedClass().classInfo; if (info.hasPerInstanceMetaClasses()) { return new PerInstancePojoMetaClassSite(callSite, info); } else { return mci.createPojoCallSite(callSite, receiver, args); } } ClassInfo info = ClassInfo.getClassInfo(klazz); if (info.hasPerInstanceMetaClasses()) return new PerInstancePojoMetaClassSite(callSite, info); else return new PojoMetaClassSite(callSite, metaClass); }
/** * Gives the meta class to an Object. */ public void getMetaClass() { Object receiver = args[0]; if (receiver == null) { mc = NullObject.getNullObject().getMetaClass(); } else if (receiver instanceof GroovyObject) { mc = ((GroovyObject) receiver).getMetaClass(); } else if (receiver instanceof Class) { Class c = (Class) receiver; ClassLoader cl = c.getClassLoader(); try { Class.forName(c.getName(), true, cl); } catch (ClassNotFoundException e) {} mc = GroovySystem.getMetaClassRegistry().getMetaClass(c); this.cache &= !ClassInfo.getClassInfo(c).hasPerInstanceMetaClasses(); } else { mc = ((MetaClassRegistryImpl) GroovySystem.getMetaClassRegistry()).getMetaClass(receiver); this.cache &= !ClassInfo.getClassInfo(receiver.getClass()).hasPerInstanceMetaClasses(); } mc.initialize(); }
public Object call(Object receiver, Object[] args) throws Throwable { if (receiver != null && info.hasPerInstanceMetaClasses()) { try { return InvokerHelper.getMetaClass(receiver).invokeMethod(receiver, name, args); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } } else { return CallSiteArray.defaultCall(this, receiver, args); } } }
public Object call(Object receiver, Object[] args) throws Throwable { if (info.hasPerInstanceMetaClasses()) { try { return InvokerHelper.getMetaClass(receiver).invokeMethod(receiver, name, args); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } } else { return CallSiteArray.defaultCall(this, receiver, args); } } }
public Object call(Object receiver, Object[] args) throws Throwable { if (info.hasPerInstanceMetaClasses()) { try { return InvokerHelper.getMetaClass(receiver).invokeMethod(receiver, name, args); } catch (GroovyRuntimeException gre) { throw ScriptBytecodeAdapter.unwrap(gre); } } else { return CallSiteArray.defaultCall(this, receiver, args); } } }
private static CallSite createPojoSite(CallSite callSite, Object receiver, Object[] args) { final Class klazz = receiver.getClass(); MetaClass metaClass = InvokerHelper.getMetaClass(receiver); if (callSite.getUsage().get() == 0 && metaClass instanceof MetaClassImpl) { final MetaClassImpl mci = (MetaClassImpl) metaClass; final ClassInfo info = mci.getTheCachedClass().classInfo; if (info.hasPerInstanceMetaClasses()) { return new PerInstancePojoMetaClassSite(callSite, info); } else { return mci.createPojoCallSite(callSite, receiver, args); } } ClassInfo info = ClassInfo.getClassInfo(klazz); if (info.hasPerInstanceMetaClasses()) return new PerInstancePojoMetaClassSite(callSite, info); else return new PojoMetaClassSite(callSite, metaClass); }
private static CallSite createPojoSite(CallSite callSite, Object receiver, Object[] args) { final Class klazz = receiver.getClass(); MetaClass metaClass = InvokerHelper.getMetaClass(receiver); if (!GroovyCategorySupport.hasCategoryInCurrentThread() && metaClass instanceof MetaClassImpl) { final MetaClassImpl mci = (MetaClassImpl) metaClass; final ClassInfo info = mci.getTheCachedClass().classInfo; if (info.hasPerInstanceMetaClasses()) { return new PerInstancePojoMetaClassSite(callSite, info); } else { return mci.createPojoCallSite(callSite, receiver, args); } } ClassInfo info = ClassInfo.getClassInfo(klazz); if (info.hasPerInstanceMetaClasses()) return new PerInstancePojoMetaClassSite(callSite, info); else return new PojoMetaClassSite(callSite, metaClass); }
private static CallSite createPojoSite(CallSite callSite, Object receiver, Object[] args) { final Class klazz = receiver.getClass(); MetaClass metaClass = InvokerHelper.getMetaClass(receiver); if (callSite.getUsage().get() == 0 && metaClass instanceof MetaClassImpl) { final MetaClassImpl mci = (MetaClassImpl) metaClass; final ClassInfo info = mci.getTheCachedClass().classInfo; if (info.hasPerInstanceMetaClasses()) { return new PerInstancePojoMetaClassSite(callSite, info); } else { return mci.createPojoCallSite(callSite, receiver, args); } } ClassInfo info = ClassInfo.getClassInfo(klazz); if (info.hasPerInstanceMetaClasses()) return new PerInstancePojoMetaClassSite(callSite, info); else return new PojoMetaClassSite(callSite, metaClass); }