Top Description Inners Fields Constructors Methods
org.jruby.ir.targets.indy

public abstract Class InvokeSite

extends MutableCallSite
Class Inheritance
Known Direct Subclasses
org.jruby.ir.targets.indy.SelfInvokeSite, org.jruby.ir.targets.simple.NormalInvokeSite
Imports
com.headius.invokebinder.Binder, .Signature, .SmartBinder, .SmartHandle, org.jruby.Ruby, .RubyBasicObject, .RubyBoolean, .RubyClass, .RubyFixnum, .RubyFloat, .RubyKernel, .RubyModule, .RubyNil, .RubyStruct, .RubySymbol, org.jruby.anno.JRubyMethod, org.jruby.internal.runtime.methods.AliasMethod, .AttrReaderMethod, .AttrWriterMethod, .CompiledIRMethod, .DynamicMethod, .HandleMethod, .MixedModeIRMethod, .NativeCallMethod, .PartialDelegatingMethod, org.jruby.ir.JIT, org.jruby.ir.runtime.IRRuntimeHelpers, org.jruby.ir.targets.SiteTracker, org.jruby.java.invokers.InstanceFieldGetter, .InstanceFieldSetter, org.jruby.javasupport.JavaUtil, org.jruby.parser.StaticScope, org.jruby.runtime.Block, .CallType, .Helpers, .ObjectAllocator, .ThreadContext, .Visibility, org.jruby.runtime.builtin.IRubyObject, org.jruby.runtime.callsite.CacheEntry, org.jruby.runtime.invokedynamic.InvocationLinker, .JRubyCallSite, org.jruby.runtime.ivars.FieldVariableAccessor, .VariableAccessor, org.jruby.util.CodegenUtils, org.jruby.util.cli.Options, org.jruby.util.log.Logger, .LoggerFactory, java.lang.invoke.CallSite, .MethodHandle, .MethodHandles, .MethodType, .MutableCallSite, .SwitchPoint, java.lang.reflect.Field, .Method, java.util.Collections, .HashMap, .Map

Created by headius on 10/23/14.

Nested and Inner Type Summary

Modifier and TypeClass and Description
pack-priv static enum

Field Summary

Modifier and TypeField and Description
public final int
public final int
private static final Map<Signature, MethodHandle>
private boolean
protected CacheEntry
public final CallType
private static final MethodHandle
pack-priv final MethodHandle
protected final String
protected final int
public final Signature
public final boolean
private static final String[]
protected final int
private boolean
private static final Logger
private static final boolean
pack-priv static final MethodHandles.Lookup
protected final String
public static final MethodHandle
public final Signature
private final long
private static final MethodHandle
private final SiteTracker

Constructor Summary

AccessConstructor and Description
public
InvokeSite(MethodType type, String name, CallType callType, boolean literalClosure, int flags, String file, int line)

Method Summary

Modifier and TypeMethod and Description
private MethodHandle
public static CallSite
pack-priv MethodHandle
pack-priv MethodHandle
private static DynamicMethod.NativeCall
buildExactNativeCall(final DynamicMethod.NativeCall nativeCall, int arity)

pack-priv MethodHandle
pack-priv MethodHandle
pack-priv MethodHandle
pack-priv MethodHandle
buildJittedHandle(CacheEntry entry, boolean blockGiven)

pack-priv static MethodHandle
pack-priv MethodHandle
buildNativeHandle(CacheEntry entry, boolean blockGiven)

pack-priv MethodHandle
pack-priv MethodHandle
pack-priv MethodHandle
public static IRubyObject
callMethodMissing(CacheEntry entry, CallType callType, ThreadContext context, IRubyObject self, RubyClass selfClass, String name, IRubyObject[] args, Block block)

Variable arity method_missing invocation.

public static IRubyObject
callMethodMissing(CacheEntry entry, CallType callType, ThreadContext context, IRubyObject self, RubyClass selfClass, String name, IRubyObject arg0, Block block)

Arity one method_missing invocation

public static IRubyObject
callMethodMissing(CacheEntry entry, CallType callType, ThreadContext context, IRubyObject self, RubyClass selfClass, String name, IRubyObject arg0, IRubyObject arg1, Block block)

Arity two method_missing invocation

public static IRubyObject
callMethodMissing(CacheEntry entry, CallType callType, ThreadContext context, IRubyObject self, RubyClass selfClass, String name, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, Block block)

Arity three method_missing invocation

private MethodHandle
private MethodHandle
public IRubyObject
fail(ThreadContext context, IRubyObject caller, IRubyObject self, IRubyObject[] args, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
fail(ThreadContext context, IRubyObject caller, IRubyObject self, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
fail(ThreadContext context, IRubyObject caller, IRubyObject self, IRubyObject arg0, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
fail(ThreadContext context, IRubyObject caller, IRubyObject self, IRubyObject arg0, IRubyObject arg1, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
fail(ThreadContext context, IRubyObject caller, IRubyObject self, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
failf(ThreadContext context, IRubyObject self, IRubyObject[] args, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
failf(ThreadContext context, IRubyObject self, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
failf(ThreadContext context, IRubyObject self, IRubyObject arg0, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
failf(ThreadContext context, IRubyObject self, IRubyObject arg0, IRubyObject arg1, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

public IRubyObject
failf(ThreadContext context, IRubyObject self, IRubyObject arg0, IRubyObject arg1, IRubyObject arg2, Block block)

Failover version uses a monomorphic cache and DynamicMethod.call, as in non-indy.

private void
finishBinding(CacheEntry entry, MethodHandle mh, IRubyObject self, RubyClass selfClass, SwitchPoint switchPoint)

private static int
getArgCount(Class<T>[] args, boolean isStatic)

private static MethodHandle
protected MethodHandle
public IRubyObject
invoke(ThreadContext context, IRubyObject caller, IRubyObject self, IRubyObject[] args, Block block)

public IRubyObject
invoke(ThreadContext context, IRubyObject self, IRubyObject[] args, Block block)

private void
private void
private static String
private void
private void
public boolean
public boolean
private CacheEntry
methodMissingEntry(ThreadContext context, RubyClass selfClass, String methodName, CacheEntry entry)

private static boolean
public String
name()

public static IRubyObject
private IRubyObject
performIndirectCall(ThreadContext context, IRubyObject self, IRubyObject[] args, Block block, String methodName, boolean passSymbol, CacheEntry entry)

private static SmartBinder
permuteForGenericCall(SmartBinder binder, DynamicMethod method, String... basePermutes)

public static RubyClass
public Binder

Returns:

the prepared binder
prepareBinder
(boolean
whether to only call an arg-boxed variable arity path
varargs
)

Prepare a binder for this call site's target, forcing varargs if specified

public void
public void
setTarget(MethodHandle
the new target
target
)

Overrides java.lang.invoke.MutableCallSite.setTarget.

Updates the target method of this call site, as a normal variable.

public static boolean
testClass(Object object, Class<T> clazz)

protected SmartHandle
pack-priv InvokeSite.CacheAction
public static boolean
testType(RubyClass original, IRubyObject self)

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

protected MethodHandle
updateInvocationTarget(MethodHandle target, IRubyObject self, RubyModule testClass, DynamicMethod method, SwitchPoint switchPoint)

Update the given call site using the new target, wrapping with appropriate bind and argument-juggling logic.

Inherited from java.lang.invoke.MutableCallSite:
dynamicInvokergetTargetsyncAll