示例#1
0
 internal override void GenCode(ILGenerator gen)
 {
     gen.EmitCallV( CompileContext.mi_JSBool_True);
 }
示例#2
0
 internal override void GenCode(ILGenerator gen)
 {
     gen.EmitCallV( CompileContext.mi_JSUndefined_Instance);
 }
示例#3
0
 protected void GenerateFunctionBody(StatementNode r, ILGenerator gen)
 {
     LocalFunctionData oldData = this.fncData;
     try
     {
         this.fncData = new LocalFunctionData(gen, gen.DefineLabel(), gen.DeclareLocal(typeof(JSValue)));
         r.GenCode(this);
         gen.EmitCallV(mi_JSUndefined_Instance);
         gen.Emit(OpCodes.Stloc, this.fncData.return_local);
         gen.MarkLabel(this.fncData.return_label);
         gen.Emit(OpCodes.Ldloc, this.fncData.return_local);
         gen.Emit(OpCodes.Ret);
     }
     finally
     {
         this.fncData = oldData;
     }
 }
示例#4
0
 internal static void GenCode(ILGenerator gen, string p)
 {
     Match m = TokenConverter.Match(p);
     string pattern = m.Groups["pattern"].Value.Replace(@"\/", "/");
     LocalBuilder lfnc = gen.DeclareLocal(typeof(JSValue));
     gen.Emit(OpCodes.Ldarg_0);
     gen.Emit(OpCodes.Ldstr, "RegExp");
     gen.EmitCallV( CompileContext.mi_GetBindingValue);
     gen.Emit(OpCodes.Stloc, lfnc.LocalIndex);
     gen.Emit(OpCodes.Ldloc, lfnc.LocalIndex);
     gen.EmitCallV( CompileContext.fnc_Utilities_JSFunctionCast);
     gen.Emit(OpCodes.Ldarg_0);
     gen.Emit(OpCodes.Ldloc, lfnc.LocalIndex);
     gen.Emit(OpCodes.Ldc_I4_2);
     gen.Emit(OpCodes.Newarr, typeof(JSValue));
     gen.Emit(OpCodes.Dup);
     gen.Emit(OpCodes.Ldc_I4_0);
     gen.Emit(OpCodes.Ldstr, pattern);
     gen.Emit(OpCodes.Newobj, CompileContext.JSString_ctor);
     gen.Emit(OpCodes.Stelem_Ref);
     gen.Emit(OpCodes.Dup);
     gen.Emit(OpCodes.Ldc_I4_1);
     gen.Emit(OpCodes.Ldstr, ProcessFlags(m.Groups["flags"].Value));
     gen.Emit(OpCodes.Newobj, CompileContext.JSString_ctor);
     gen.Emit(OpCodes.Stelem_Ref);
     gen.Emit(OpCodes.Newobj, CompileContext.JSArgs_ctor);
     gen.EmitCallV( CompileContext.mi_JSFunctionBase_Construct);
 }