本文整理汇总了C#中CodeGenContext.newLine方法的典型用法代码示例。如果您正苦于以下问题:C# CodeGenContext.newLine方法的具体用法?C# CodeGenContext.newLine怎么用?C# CodeGenContext.newLine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CodeGenContext
的用法示例。
在下文中一共展示了CodeGenContext.newLine方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenCode0
internal override void GenCode0(CodeGenContext context)
{
PERWAPI.CILLabel elseLabel = context.NewLabel();
PERWAPI.CILLabel endLabel = context.NewLabel();
// if (Eval.Test(cond))
context.newLine(cond.location);
cond.GenCode(context);
context.call(Runtime.Eval.Test);
context.brfalse(elseLabel);
if (body != null)
{
context.newStartPoint(body.location);
body.GenCode(context);
}
else
context.ldnull();
if (context.Reachable())
context.br(endLabel);
context.CodeLabel(elseLabel);
if (_else != null)
{
context.newStartPoint(_else.location);
_else.GenCode(context);
}
else
context.ldnull();
context.CodeLabel(endLabel);
context.newEndPoint(location);
}
示例2: GenCode0
internal override void GenCode0(CodeGenContext context)
{
context.newLine(location);
lhs.Assign(context, rhs);
}
示例3: GenCode0
internal override void GenCode0(CodeGenContext context)
{
context.newLine(location);
if (return_val != null)
return_val.GenCode(context);
else
context.ldnull();
if (this.parent_scope is BLOCK)
{
//throw new Ruby.ReturnException(return_value, this.defining_scope);
context.ldarg(0); // current Ruby.MethodBody
context.ldfld(Runtime.Block.defining_scope);
context.newobj(Runtime.ReturnException.ctor);
context.throwOp();
}
else if (this.parent_scope is BEGIN)
{
//throw new Ruby.ReturnException(return_value, caller);
context.ldarg("caller");
context.newobj(Runtime.ReturnException.ctor);
context.throwOp();
}
else
{
// return
context.stloc(parent_scope.returnTemp);
context.Goto(context.labels.Return);
}
}
示例4: GenCode0
internal override void GenCode0(CodeGenContext context)
{
// Eval.alias(ruby_class, lhs, rhs, myFrame);
context.newLine(location);
context.ruby_class(parent_scope);
context.ldstr(lhs.ToString());
context.ldstr(rhs.ToString());
context.ldloc(0);
context.call(Runtime.Eval.alias);
}
示例5: GenCode0
internal override void GenCode0(CodeGenContext context)
{
context.newLine(location);
SetLine(context);
// Ruby.ArgList arguments = args;
bool created;
arguments = args.GenArgList(context, out created);
GenCall(context);
context.ReleaseLocal(arguments, created);
}
示例6: GenCode
internal void GenCode(CodeGenContext context, PERWAPI.CILLabel endLabel)
{
PERWAPI.CILLabel elseLabel = context.NewLabel();
context.newLine(comparison.location);
// if (comparision.ToRubyArray().includes(true, caller))
bool created;
ISimple list = comparison.GenArgList(context, out created);
list.GenSimple(context);
context.ReleaseLocal(list, created);
context.callvirt(Runtime.ArgList.ToRubyArray);
new TRUE(comparison.location).GenCode(context);
context.ldloc(0);
context.callvirt(Runtime.Array.includes);
context.brfalse(elseLabel);
if (body != null)
{
context.newStartPoint(body.location);
body.GenCode(context);
}
else
context.ldnull();
context.br(endLabel);
context.CodeLabel(elseLabel);
}
示例7: GenCode0
//.........这里部分代码省略.........
// Define singleton in file class so that it gets initialized by .cctor
singletonField = FileClass().AddField(PERWAPI.FieldAttr.PublicStatic, internal_name, Runtime.ClassRef);
newContext.CurrentRubyClass = singletonField;
// public MyClass() : base(singleton) { };
CodeGenContext class_constructor = null;
if (defineInteropClass)
{
if (interopClass.GetMethod(".ctor", new Type[0]) == null)
{
CodeGenContext class_constructor0 = newContext.CreateConstructor(interopClass);
class_constructor0.ldarg(0);
if (superClassConstructor0 != null)
class_constructor0.call(superClassConstructor0);
else
{
class_constructor0.ldsfld(singletonField);
class_constructor0.call(superClassConstructor1);
}
class_constructor0.ret();
class_constructor0.Close();
}
// public MyClass(Class klass) : base(klass) { };
MethodDef ctor = interopClass.GetMethod(".ctor", new Type[] { Runtime.ClassRef });
//CodeGenContext class_constructor;
if (ctor == null)
{
class_constructor = newContext.CreateConstructor(interopClass, new Param(ParamAttr.Default, "klass", Runtime.ClassRef));
class_constructor.ldarg(0);
class_constructor.ldarg("klass");
class_constructor.call(superClassConstructor1);
class_constructor.ret();
class_constructor.Close();
}
else
{
class_constructor = new CodeGenContext();
class_constructor.Method = ctor;
}
}
// internal static void Init_fullname(object scope, object super, object recv, Frame caller) {
CodeGenContext Init = newContext.CreateMethod(FileClass(), MethAttr.PublicStatic, "Init_" + internal_name, PrimitiveType.Object,
new Param(ParamAttr.Default, "scope", PrimitiveType.Object),
new Param(ParamAttr.Default, "super", PrimitiveType.Object),
new Param(ParamAttr.Default, "recv", PrimitiveType.Object),
new Param(ParamAttr.Default, "caller", Runtime.FrameRef));
skeleton.initMethod = Init.Method;
Init.startMethod(this.location);
AddScopeLocals(Init);
// singleton = scope.define_???(...)
DefineClass(Init, singletonField);
// recv = singleton;
Init.ldsfld(singletonField);
Init.starg("recv");
// Fixme: should be conditional
// singleton.define_allocator(allocator);
if (defineInteropClass)
{
FieldDef allocator = DefineAllocator(newContext, class_constructor.Method);
if (allocator != null)
{
Init.ldsfld(singletonField);
Init.ldsfld(allocator);
Init.call(Runtime.Class.define_alloc_func);
}
}
AddScopeBody(Init);
Init.ReleaseLocal(0, true);
Init.Close();
if (defineInteropClass)
interopClasses.Pop();
// --------------------- Return to old Context ----------------------------
context.newLine(location);
// Init(scope, super, recv, caller);
scope.GenSimple(context);
super.GenSimple(context);
context.ldarg("recv");
context.ldloc(0);
context.call(Init.Method);
context.ReleaseLocal(super, super_created);
context.ReleaseLocal(scope, scope_created);
}