public final CallContext getCallContext(Type returnType, Type[] parameterTypes, CallingConvention convention, boolean saveErrno, boolean faultProtect) { Signature signature = new Signature(returnType, parameterTypes, convention, saveErrno, faultProtect); CallContextRef ref = contextCache.get(signature); CallContext ctx; if (ref != null && (ctx = ref.get()) != null) { return ctx; } // Cull any dead references while ((ref = (CallContextRef) contextReferenceQueue.poll()) != null) { contextCache.remove(ref.signature); } ctx = new CallContext(returnType, parameterTypes.clone(), convention, saveErrno, faultProtect); contextCache.put(signature, new CallContextRef(signature, ctx, contextReferenceQueue)); return ctx; }
public final CallContext getCallContext(Type returnType, Type[] parameterTypes, CallingConvention convention, boolean saveErrno, boolean faultProtect) { Signature signature = new Signature(returnType, parameterTypes, convention, saveErrno, faultProtect); CallContextRef ref = contextCache.get(signature); CallContext ctx; if (ref != null && (ctx = ref.get()) != null) { return ctx; } // Cull any dead references while ((ref = (CallContextRef) contextReferenceQueue.poll()) != null) { contextCache.remove(ref.signature); } ctx = new CallContext(returnType, parameterTypes.clone(), convention, saveErrno, faultProtect); contextCache.put(signature, new CallContextRef(signature, ctx, contextReferenceQueue)); return ctx; }
public final CallContext getCallContext(Type returnType, Type[] parameterTypes, CallingConvention convention, boolean saveErrno, boolean faultProtect) { Signature signature = new Signature(returnType, parameterTypes, convention, saveErrno, faultProtect); CallContextRef ref = contextCache.get(signature); CallContext ctx; if (ref != null && (ctx = ref.get()) != null) { return ctx; } // Cull any dead references while ((ref = (CallContextRef) contextReferenceQueue.poll()) != null) { contextCache.remove(ref.signature); } ctx = new CallContext(returnType, parameterTypes.clone(), convention, saveErrno, faultProtect); contextCache.put(signature, new CallContextRef(signature, ctx, contextReferenceQueue)); return ctx; }