internal override void GenCode(ILGenerator gen) { gen.EmitCallV( CompileContext.mi_JSBool_True); }
internal override void GenCode(ILGenerator gen) { gen.EmitCallV( CompileContext.mi_JSUndefined_Instance); }
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; } }
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); }