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
BSwitchInstr — members 15+
C new(jumps, jump_operands, operand, ruby_case, targets, else_target, expected_class)
M case_operand() Operand
M clone(info) Instr
M decode(d) BSwitchInstr
M else_target() Label
C encode(e)
M expected_class() Class
M interpret_and_get_new_ipc(context, curr_dyn_scope, curr_scope, self, temp, ipc) int
M jump_targets() Label[]
M jumps() int[]
M operands() Operand[]
M ruby_case_label() Label
C set_operand(i, operand)
M targets() Label[]
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
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>

org.jruby.ir.instructions.BSwitchInstr

class extends MultiBranchInstr 15 members

Represents a multiple-target jump instruction based on a switch-like table

Constructors

new

new ( int[] jumps, Operand[] jump_operands, Operand operand, Label ruby_case, Label[] targets, Label else_target, Class expected_class )
Java: <init>(int[] jumps, org.jruby.ir.operands.Operand[] jumpOperands, org.jruby.ir.operands.Operand operand, org.jruby.ir.operands.Label rubyCase, org.jruby.ir.operands.Label[] targets, org.jruby.ir.operands.Label elseTarget, Class expectedClass)

Class Methods

decode

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

Instance Methods

case_operand

Operand case_operand ( )
Java: getCaseOperand() · also: get_case_operand

clone

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

else_target

Label else_target ( )
Java: getElseTarget() · also: get_else_target

encode

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

expected_class

Class expected_class ( )
Java: getExpectedClass() · also: get_expected_class

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)

jump_targets

Label[] jump_targets ( )
Java: getJumpTargets() · also: get_jump_targets

jumps

int[] jumps ( )
Java: getJumps() · also: get_jumps

operands

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

ruby_case_label

Label ruby_case_label ( )
Java: getRubyCaseLabel() · also: get_ruby_case_label

set_operand

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

targets

Label[] targets ( )
Java: getTargets() · also: get_targets

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)

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