public override void Compile(ByteCode bc) { m_Function.Compile(bc); var argslen = m_Arguments.Count; if (!string.IsNullOrEmpty(m_Name)) { bc.Emit_Copy(0); bc.Emit_Index(DynValue.NewString(m_Name), true); bc.Emit_Swap(0, 1); ++argslen; } for (var i = 0; i < m_Arguments.Count; i++) m_Arguments[i].Compile(bc); if (!string.IsNullOrEmpty(m_Name)) { bc.Emit_ThisCall(argslen, m_DebugErr); } else { bc.Emit_Call(argslen, m_DebugErr); } }
public override void Compile(ByteCode bc) { m_BaseExp.Compile(bc); if (m_Name != null) { bc.Emit_Index(DynValue.NewString(m_Name), true); } else if (m_IndexExp is LiteralExpression) { var lit = (LiteralExpression) m_IndexExp; bc.Emit_Index(lit.Value); } else { m_IndexExp.Compile(bc); bc.Emit_Index(isExpList: (m_IndexExp is ExprListExpression)); } }