@Override public Instr clone(CloneInfo ii) { return new GetFieldInstr(ii.getRenamedVariable(getResult()), getSource().cloneForInlining(ii), getName()); }
@Override public Object interpret(ThreadContext context, StaticScope currScope, DynamicScope currDynScope, IRubyObject self, Object[] temp) { IRubyObject object = (IRubyObject) getSource().retrieve(context, self, currScope, currDynScope, temp); VariableAccessor a = getAccessor(object); Object result = a == null ? null : (IRubyObject)a.get(object); if (result == null) { Ruby runtime = context.runtime; if (runtime.isVerbose()) { runtime.getWarnings().warning(IVAR_NOT_INITIALIZED, str(runtime, "instance variable ", ids(runtime, getId()), " not initialized")); } result = context.nil; } return result; }
@Override public Instr cloneForInlining(InlinerInfo ii) { return new GetFieldInstr(ii.getRenamedVariable(getResult()), getSource().cloneForInlining(ii), getRef()); }
@Override public Object interpret(ThreadContext context, DynamicScope currDynScope, IRubyObject self, Object[] temp, Block block) { IRubyObject object = (IRubyObject) getSource().retrieve(context, self, currDynScope, temp); VariableAccessor a = getAccessor(object); IRubyObject value = a == null ? context.nil : (IRubyObject)a.get(object); return value == null ? context.nil : value; }
IRubyObject object = (IRubyObject)gfi.getSource().retrieve(context, self, currScope, currDynScope, temp); VariableAccessor a = gfi.getAccessor(object); Object result = a == null ? null : (IRubyObject)a.get(object); if (result == null) { if (context.runtime.isVerbose()) { context.runtime.getWarnings().warning(IRubyWarnings.ID.IVAR_NOT_INITIALIZED, str(context.runtime, "instance variable ", ids(context.runtime, gfi.getId()), " not initialized")); setResult(temp, currDynScope, gfi.getResult(), result); break;
IRubyObject object = (IRubyObject)gfi.getSource().retrieve(context, self, currDynScope, temp); VariableAccessor a = gfi.getAccessor(object); result = a == null ? null : (IRubyObject)a.get(object); if (result == null) { result = context.nil; setResult(temp, currDynScope, gfi.getResult(), result); break;
public static GetFieldInstr decode(IRReaderDecoder d) { return new GetFieldInstr(d.decodeVariable(), d.decodeOperand(), d.decodeSymbol()); }
/** * Additional metadata about this method. */ public MethodData getMethodData() { if (methodData == null) { List<String> ivarNames = new ArrayList<>(); InterpreterContext context = ensureInstrsReady(); for (Instr i : context.getInstructions()) { switch (i.getOperation()) { case GET_FIELD: ivarNames.add(((GetFieldInstr) i).getId()); break; case PUT_FIELD: ivarNames.add(((PutFieldInstr) i).getId()); break; } } methodData = new MethodData(method.getId(), method.getFile(), ivarNames); } return methodData; } }
public VariableAccessor getAccessor(IRubyObject o) { RubyClass cls = o.getMetaClass().getRealClass(); VariableAccessor localAccessor = accessor; IRubyObject value; if (localAccessor.getClassId() != cls.hashCode()) { localAccessor = cls.getVariableAccessorForRead(getRef()); accessor = localAccessor; } return localAccessor; }
case GET_ENCODING: return GetEncodingInstr.decode(this); case GET_ERROR_INFO: return GetErrorInfoInstr.decode(this); case GET_FIELD: return GetFieldInstr.decode(this); case GET_GLOBAL_VAR: return GetGlobalVariableInstr.decode(this); case GVAR_ALIAS: return GVarAliasInstr.decode(this);
IRubyObject object = (IRubyObject)gfi.getSource().retrieve(context, self, currScope, currDynScope, temp); VariableAccessor a = gfi.getAccessor(object); Object result = a == null ? null : (IRubyObject)a.get(object); if (result == null) { if (context.runtime.isVerbose()) { context.runtime.getWarnings().warning(IRubyWarnings.ID.IVAR_NOT_INITIALIZED, str(context.runtime, "instance variable ", ids(context.runtime, gfi.getId()), " not initialized")); setResult(temp, currDynScope, gfi.getResult(), result); break;
IRubyObject object = (IRubyObject)gfi.getSource().retrieve(context, self, currDynScope, temp); VariableAccessor a = gfi.getAccessor(object); result = a == null ? null : (IRubyObject)a.get(object); if (result == null) { result = context.nil; setResult(temp, currDynScope, gfi.getResult(), result); break;
@Override public Object interpret(ThreadContext context, DynamicScope currDynScope, IRubyObject self, Object[] temp, Block block) { IRubyObject object = (IRubyObject) getSource().retrieve(context, self, currDynScope, temp); VariableAccessor a = getAccessor(object); IRubyObject value = a == null ? context.nil : (IRubyObject)a.get(object); return value == null ? context.nil : value; }
public static GetFieldInstr decode(IRReaderDecoder d) { return new GetFieldInstr(d.decodeVariable(), d.decodeOperand(), d.decodeSymbol()); }
public VariableAccessor getAccessor(IRubyObject o) { RubyClass cls = o.getMetaClass().getRealClass(); VariableAccessor localAccessor = accessor; if (localAccessor.getClassId() != cls.hashCode()) { localAccessor = cls.getVariableAccessorForRead(getId()); accessor = localAccessor; } return localAccessor; }
public VariableAccessor getAccessor(IRubyObject o) { RubyClass cls = o.getMetaClass().getRealClass(); VariableAccessor localAccessor = accessor; IRubyObject value; if (localAccessor.getClassId() != cls.hashCode()) { localAccessor = cls.getVariableAccessorForRead(getRef()); accessor = localAccessor; } return localAccessor; }