synchronized <T extends Object> NativeClosureFactory<T> getClosureFactory(Class<T> closureClass) { NativeClosureFactory<T> factory = factories.get(closureClass); if (factory != null) { return factory; } factory = NativeClosureFactory.newClosureFactory(runtime, closureClass, typeMapper); factories.put(closureClass, factory); return factory; }
public Pointer toNative(T value, ToNativeContext context) { NativeClosureFactory.ClosureReference ref = closureReference; if (ref != null && ref.getCallable() == value) { return ref.getPointer(); } ref = factory.getClosureReference(value); if (closureReference == null || closureReference.get() == null) { closureReference = ref; } return ref.getPointer(); }