private int ExecConcat(Instruction i, int instructionPtr) { DynValue r = m_ValueStack.Pop().ToScalar(); DynValue l = m_ValueStack.Pop().ToScalar(); string rs = r.CastToString(); string ls = l.CastToString(); if (rs != null && ls != null) { m_ValueStack.Push(DynValue.NewString(ls + rs)); return(instructionPtr); } else { int ip = Internal_InvokeBinaryMetaMethod(l, r, "__concat", instructionPtr); if (ip >= 0) { return(ip); } else { throw ScriptRuntimeException.ConcatOnNonString(l, r); } } }