public static void checkpointFallback(MutableCallSite site, ThreadContext context) throws Throwable { Ruby runtime = context.runtime; Invalidator invalidator = runtime.getCheckpointInvalidator(); MethodHandle target = Binder .from(void.class, ThreadContext.class) .nop(); MethodHandle fallback = lookup().findStatic(Bootstrap.class, "checkpointFallback", methodType(void.class, MutableCallSite.class, ThreadContext.class)); fallback = fallback.bindTo(site); target = ((SwitchPoint)invalidator.getData()).guardWithTest(target, fallback); site.setTarget(target); }
public static void checkpointFallback(MutableCallSite site, ThreadContext context) throws Throwable { Ruby runtime = context.runtime; Invalidator invalidator = runtime.getCheckpointInvalidator(); MethodHandle target = Binder .from(void.class, ThreadContext.class) .nop(); MethodHandle fallback = lookup().findStatic(Bootstrap.class, "checkpointFallback", methodType(void.class, MutableCallSite.class, ThreadContext.class)); fallback = fallback.bindTo(site); target = ((SwitchPoint)invalidator.getData()).guardWithTest(target, fallback); site.setTarget(target); }
public static void checkpointFallback(MutableCallSite site, ThreadContext context) throws Throwable { Ruby runtime = context.runtime; Invalidator invalidator = runtime.getCheckpointInvalidator(); MethodHandle target = Binder .from(void.class, ThreadContext.class) .nop(); MethodHandle fallback = lookup().findStatic(InvokeDynamicSupport.class, "checkpointFallback", methodType(void.class, MutableCallSite.class, ThreadContext.class)); fallback = fallback.bindTo(site); target = ((SwitchPoint)invalidator.getData()).guardWithTest(target, fallback); site.setTarget(target); }
public static void checkpointFallback(MutableCallSite site, ThreadContext context) throws Throwable { Ruby runtime = context.runtime; Invalidator invalidator = runtime.getCheckpointInvalidator(); MethodHandle target = Binder .from(void.class, ThreadContext.class) .nop(); MethodHandle fallback = lookup().findStatic(InvokeDynamicSupport.class, "checkpointFallback", methodType(void.class, MutableCallSite.class, ThreadContext.class)); fallback = fallback.bindTo(site); target = ((SwitchPoint)invalidator.getData()).guardWithTest(target, fallback); site.setTarget(target); }