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
BuildCompoundStringInstr — members 14+
C new(result, pieces, encoding, estimated_size, string_style, file, line)
M chilled?() boolean
M clone(ii) Instr
M decode(d) BuildCompoundStringInstr
C encode(e)
M encoding() Encoding
M file() String
M frozen?() boolean
M initial_size() int
M interpret(context, curr_scope, curr_dyn_scope, self, temp) Object
M line() int
M pieces() Operand[]
M simplify_instr(manager) Instr
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_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_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 NOperandResultBaseInstr
M operands() Operand[]
C set_operand(i, operand)

org.jruby.ir.instructions.BuildCompoundStringInstr

class extends NOperandResultBaseInstr 14 members

Constructors

new

new ( Variable result, Operand[] pieces, Encoding encoding, int estimated_size, StringStyle string_style, String file, int line )
Java: <init>(org.jruby.ir.operands.Variable result, org.jruby.ir.operands.Operand[] pieces, org.jcodings.Encoding encoding, int estimatedSize, org.jruby.ir.builder.StringStyle stringStyle, String file, int line)

Class Methods

decode

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

Instance Methods

chilled?

boolean chilled? ( )
Java: isChilled() · also: is_chilled

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)

encoding

Encoding encoding ( )
Java: getEncoding() · also: get_encoding

file

String file ( )
Java: getFile() · also: get_file

frozen?

boolean frozen? ( )
Java: isFrozen() · also: is_frozen

initial_size

int initial_size ( )
Java: getInitialSize() · also: get_initial_size

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)

line

int line ( )
Java: getLine() · also: get_line

pieces

Operand[] pieces ( )
Java: getPieces() · also: get_pieces

simplify_instr

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

This will make an attempt to combine multiple pieces when they are contiguout frozen strings OR immutable literals. It may fail as not all strings can be concatenated together (e.g. mismatched encodings).

nametypedescription
managerorg.jruby.ir.IRManagerthe IR manager

Returns: the simplified instruction or itself when it cannot be simplified.

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_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_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 NOperandResultBaseInstr

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)