private void PreAnalyzeLocalFunction(LocalFunctionData functionData, SemanticModel semanticModel) { if (functionData.MethodData.Conversion.HasFlag(MethodConversion.Copy)) { functionData.Copy(); return; } //TODO FillFunctionLocks(functionData, semanticModel); }
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; } }