jruby/docs BETA
Navigation
org.jruby.ir.instructions 146
C AliasInstr
I ArgReceiver
C ArrayDerefInstr
C AsFixnumInstr
C AsStringInstr
C AttrAssignInstr
C BFalseInstr
C BIntInstr
C BNEInstr
C BNilInstr
C BSwitchInstr
C BTrueInstr
C BUndefInstr
C BlockGivenCallInstr
C BlockGivenInstr
C BranchInstr
C BreakInstr
C BuildBackrefInstr
C BuildCompoundArrayInstr
C BuildCompoundStringInstr
C BuildDynRegExpInstr
C BuildLambdaInstr
C BuildNthRefInstr
C BuildRangeInstr
C BuildSplatInstr
C CallBase
C CallInstr
C CheckArgsArrayArityInstr
C CheckArityInstr
C CheckForLJEInstr
C ClassSuperInstr
I ClosureAcceptingInstr
C CopyInstr
C DebugOutputInstr
C DefineClassInstr
C DefineClassMethodInstr
C DefineInstanceMethodInstr
C DefineMetaClassInstr
C DefineModuleInstr
C EQQInstr
C ExceptionRegionEndMarkerInstr
C ExceptionRegionStartMarkerInstr
I FixedArityInstr
C FrameNameCallInstr
C GVarAliasInstr
C GetClassVarContainerModuleInstr
C GetClassVariableInstr
C GetEncodingInstr
C GetFieldInstr
C GetGlobalVariableInstr
C GetInstr
C InheritanceSearchConstInstr
C InlinedLineNumberInstr
C InstanceSuperInstr
C Instr
C IntegerMathInstr
C JumpInstr
I JumpTargetInstr
C LabelInstr
C LexicalSearchConstInstr
C LineNumberInstr
C LoadBlockImplicitClosureInstr
C LoadFrameClosureInstr
C LoadImplicitClosureInstr
C LoadLocalVarInstr
C MatchInstr
C ModuleVersionGuardInstr
C MultiBranchInstr
C MultipleAsgnBase
C NOperandInstr
C NOperandResultBaseInstr
C NoOperandInstr
C NoOperandResultBaseInstr
C NoResultCallInstr
C NonlocalReturnInstr
C NopInstr
C OneOperandBranchInstr
C OneOperandInstr
C OneOperandResultBaseInstr
C OptArgMultipleAsgnInstr
C PopBackrefFrameInstr
C PopBindingInstr
C PopBlockFrameInstr
C PopMethodFrameInstr
C PrepareBlockArgsInstr
C PrepareFixedBlockArgsInstr
C PrepareNoBlockArgsInstr
C PrepareSingleBlockArgInstr
C ProcessModuleBodyInstr
C PushBackrefFrameInstr
C PushBlockBindingInstr
C PushBlockFrameInstr
C PushMethodBindingInstr
C PushMethodFrameInstr
C PutClassVariableInstr
C PutConstInstr
C PutFieldInstr
C PutGlobalVarInstr
C PutInstr
C RaiseArgumentErrorInstr
C RaiseRequiredKeywordArgumentError
C ReceiveArgBase
C ReceiveExceptionBase
C ReceiveIndexedArgBase
C ReceiveJRubyExceptionInstr
C ReceiveKeywordArgInstr
C ReceiveKeywordRestArgInstr
C ReceiveKeywordsInstr
C ReceiveOptArgInstr
C ReceivePostReqdArgInstr
C ReceivePreReqdArgInstr
C ReceiveRestArgInstr
C ReceiveRubyExceptionInstr
C ReceiveSelfInstr
C RecordEndBlockInstr
C ReifyClosureInstr
C ReqdArgMultipleAsgnInstr
C RescueEQQInstr
C RestArgMultipleAsgnInstr
C RestoreBindingVisibilityInstr
C ResultBaseInstr
I ResultInstr
C ReturnBase
C ReturnInstr
C ReturnOrRethrowSavedExcInstr
C RuntimeHelperCall
C SaveBindingVisibilityInstr
C SearchConstInstr
C SearchModuleForConstInstr
C SetCapturedVarInstr
I Site
C StoreLocalVarInstr
E SuperInstrType
C ThreadPollInstr
C ThrowExceptionInstr
C ToAryInstr
C ToggleBacktraceInstr
C TraceInstr
C TwoOperandBranchInstr
C TwoOperandInstr
C TwoOperandResultBaseInstr
C UndefMethodInstr
C UnresolvedSuperInstr
C UpdateBlockExecutionStateInstr
C YieldInstr
C ZSuperInstr
ReceiveKeywordsInstr — members 8+
C new(result, has_rest_arg, accepts_keywords)
M accepts_keywords() boolean
M clone(ii) Instr
M decode(d) ReceiveKeywordsInstr
C encode(e)
M has_rest_arg?() boolean
M receive_arg(context, self, curr_dyn_scope, curr_scope, temp, args, ruby2keywords) IRubyObject
C visit(visitor)
from Instr
F EMPTY_OPERANDS Operand[]
M can_be_deleted_from_scope(fic) boolean
M can_raise_exception() boolean
M clone_operands(info) Operand[]
M compute_scope_flags(scope, flags) boolean
M dead?() boolean
M deletable?() boolean
M dumpable_fields() Field[]
M has_side_effects?() boolean
M interpret(context, curr_scope, curr_dyn_scope, self, temp) Object
M interpret_and_get_new_ipc(context, curr_dyn_scope, curr_scope, self, temp, ipc) int
C mark_dead()
M operation() Operation
C rename_vars(rename_map)
M simplify_instr(manager) Instr
M simplify_operands(scope, value_map) Operand
M to_string() String
M to_string_non_operand_args() String[]
M transfers_control() boolean
M used_variables() Variable>
from ResultBaseInstr
M result() Variable
C update_result(result)
from NoOperandResultBaseInstr
M operands() Operand[]
C set_operand(i, operand)

org.jruby.ir.instructions.ReceiveKeywordsInstr

class extends NoOperandResultBaseInstr implements ArgReceiver 8 members

Gets the keyword arg (or representation of what might be holding keyword args). The result of this is passed into the other keyword arg instructions to get what those instrs are interested in. One intent of this result is that it can be mutable so it can toggle off keyword arg flags early in the method before any exceptions or side-effects in the method can occur. It also can remove key/value pairs as individual keyword instructions execute. After all individual instructions have executed anything left is either kwrest or an arity error.

Constructors

new

new ( Variable result, boolean has_rest_arg, boolean accepts_keywords )
Java: <init>(org.jruby.ir.operands.Variable result, boolean hasRestArg, boolean acceptsKeywords)

Class Methods

decode

ReceiveKeywordsInstr decode ( IRReaderDecoder d )
Java: decode(org.jruby.ir.persistence.IRReaderDecoder d)

Instance Methods

accepts_keywords

boolean accepts_keywords ( )
Java: acceptsKeywords()

clone

Instr clone ( CloneInfo ii )
Java: clone(org.jruby.ir.transformations.inlining.CloneInfo ii)

encode

encode ( IRWriterEncoder e )
Java: encode(org.jruby.ir.persistence.IRWriterEncoder e)

has_rest_arg?

boolean has_rest_arg? ( )
Java: hasRestArg() · also: has_rest_arg

receive_arg

IRubyObject receive_arg ( ThreadContext context, IRubyObject self, DynamicScope curr_dyn_scope, StaticScope curr_scope, Object[] temp, IRubyObject[] args, boolean ruby2keywords )
Java: receiveArg(org.jruby.runtime.ThreadContext context, org.jruby.runtime.builtin.IRubyObject self, org.jruby.runtime.DynamicScope currDynScope, org.jruby.parser.StaticScope currScope, Object[] temp, org.jruby.runtime.builtin.IRubyObject[] args, boolean ruby2keywords)

visit

visit ( IRVisitor visitor )
Java: visit(org.jruby.ir.IRVisitor visitor)

Inherited

from Instr

fieldtypenote
EMPTY_OPERANDS Operand[]

can_be_deleted_from_scope

boolean can_be_deleted_from_scope ( FullInterpreterContext fic )
Java: canBeDeletedFromScope(org.jruby.ir.interpreter.FullInterpreterContext fic)

can_raise_exception

boolean can_raise_exception ( )
Java: canRaiseException()

clone_operands

Operand[] clone_operands ( CloneInfo info )
Java: cloneOperands(org.jruby.ir.transformations.inlining.CloneInfo info)

compute_scope_flags

boolean compute_scope_flags ( IRScope scope, EnumSet<IRFlags> flags )
Java: computeScopeFlags(org.jruby.ir.IRScope scope, EnumSet<org.jruby.ir.IRFlags> flags)

Does this instruction do anything the scope is interested in?

Returns: true if it modified the scope or set any flags.

dead?

boolean dead? ( )
Java: isDead() · also: is_dead

deletable?

boolean deletable? ( )
Java: isDeletable() · also: is_deletable

Can this instruction be deleted? LVA will preserve instructions based on whether operands (variables) are living but even if there are no living variables then the instruction itself may not be able to be removed during DCE for other reasons (like if it unconditionally has a side-effect)

dumpable_fields

Field[] dumpable_fields ( )
Java: dumpableFields()

has_side_effects?

boolean has_side_effects? ( )
Java: hasSideEffects() · also: has_side_effects

interpret

Object interpret ( ThreadContext context, StaticScope curr_scope, DynamicScope curr_dyn_scope, IRubyObject self, Object[] temp )
Java: interpret(org.jruby.runtime.ThreadContext context, org.jruby.parser.StaticScope currScope, org.jruby.runtime.DynamicScope currDynScope, org.jruby.runtime.builtin.IRubyObject self, Object[] temp)

interpret_and_get_new_ipc

int interpret_and_get_new_ipc ( ThreadContext context, DynamicScope curr_dyn_scope, StaticScope curr_scope, IRubyObject self, Object[] temp, int ipc )
Java: interpretAndGetNewIPC(org.jruby.runtime.ThreadContext context, org.jruby.runtime.DynamicScope currDynScope, org.jruby.parser.StaticScope currScope, org.jruby.runtime.builtin.IRubyObject self, Object[] temp, int ipc)

mark_dead

mark_dead ( )
Java: markDead()

operation

Operation operation ( )
Java: getOperation() · also: get_operation

rename_vars

rename_vars ( Map<Operand,Operand> rename_map )
Java: renameVars(Map<org.jruby.ir.operands.Operand,org.jruby.ir.operands.Operand> renameMap)

simplify_instr

Instr simplify_instr ( IRManager manager )
Java: simplifyInstr(org.jruby.ir.IRManager manager)

simplify_operands

Operand simplify_operands ( IRScope scope, Map<Operand,Operand> value_map )
Java: simplifyOperands(org.jruby.ir.IRScope scope, Map<org.jruby.ir.operands.Operand,org.jruby.ir.operands.Operand> valueMap)

This method takes as input a map of operands to their values, and outputs the result of this instruction. If the value map provides a value for any of the instruction's operands the expectation is that the operand will be replaced with the simplified value. It is not required that it do so -- code correctness is not compromised by failure to simplify.

nametypedescription
scopeorg.jruby.ir.IRScopewhere this instr exists
value_mapMap<org.jruby.ir.operands.Operand,org.jruby.ir.operands.Operand>Mapping from operands to their simplified values

Returns: simplified result / output of this instruction

to_string

String to_string ( )
Java: toString()

Instructions are meant to be in a machine-readable format so offline tooling can parse the debugging output. The format is: (result_op '=')? instr '(' (operand ',' )* operand? ';' (extra_arg ',')* extra_arg? ')' extra_arg can either be plain value or in a key: value format.

Returns: a String

to_string_non_operand_args

String[] to_string_non_operand_args ( )
Java: toStringNonOperandArgs()

transfers_control

boolean transfers_control ( )
Java: transfersControl()

used_variables

List<Variable> used_variables ( )
Java: getUsedVariables() · also: get_used_variables

from ResultBaseInstr

result

Variable result ( )
Java: getResult() · also: get_result

update_result

update_result ( Variable result )
Java: updateResult(org.jruby.ir.operands.Variable result)

from NoOperandResultBaseInstr

operands

Operand[] operands ( )
Java: getOperands() · also: get_operands

set_operand

set_operand ( int i, Operand operand )
Java: setOperand(int i, org.jruby.ir.operands.Operand operand)