asp.net – .NET JIT编译器会优化方法调用吗?
发布时间:2020-12-16 07:05:37 所属栏目:asp.Net 来源:网络整理
导读:我从ASP.NET应用程序返回的堆栈跟踪,从ArgumentNullException生成,给人的印象是下面代码的最后一行发生错误.据我所知,这是不可能的,但如果JIT优化了对Bar的调用,这将导致不同的堆栈跟踪,它将解释所有.我肯定知道它不是c#编译器,因为CIL看起来像我期望的那样.
我从ASP.NET应用程序返回的堆栈跟踪,从ArgumentNullException生成,给人的印象是下面代码的最后一行发生错误.据我所知,这是不可能的,但如果JIT优化了对Bar的调用,这将导致不同的堆栈跟踪,它将解释所有.我肯定知道它不是c#编译器,因为CIL看起来像我期望的那样.是否有可能JIT编译器删除了对Bar的调用?
c#4,.NET 4.0.30319.1,ASP.NET 4.0.30319.1 编辑: Stack Trace: [ArgumentNullException: Value cannot be null. Parameter name: value] CreateHiddenField(HtmlTextWriter tr,String name,String value) in Foo.cs:129 Foo(IHttpContext context,HtmlTextWriter writer) in Foo.cs:106 private static void Foo(IHttpContext context,HtmlTextWriter writer) { // line 103 Bar(writer,AuthorizationServerResponseDetailsHttpRequestParser.RequestSAMLFieldName,context); Bar(writer,AuthorizationServerResponseDetailsHttpRequestParser.RequestTargetFieldName,context); // line 106 - blank line in source code. CreateHiddenField(tr,name,string.Empty); // looks like its here } private static void Bar(HtmlTextWriter tr,string name,IHttpContext context) { // line 116 #region Sanitation if (tr == null) { throw new System.ArgumentNullException("tr"); } if (name == null) { throw new System.ArgumentNullException("name"); } if (context == null) { throw new System.ArgumentNullException("context"); } #endregion CreateHiddenField(tr,context.RequestQueryString(name)); } private static void CreateHiddenField(HtmlTextWriter tr,string value) { // line 127 #region Sanitation if (tr == null) { throw new System.ArgumentNullException("tr"); } if (name == null) { throw new System.ArgumentNullException("name"); } if (value == null) { throw new System.ArgumentNullException("value"); } #endregion // payload... } 解决方法
根据
http://www.hanselman.com/blog/ReleaseISNOTDebug64bitOptimizationsAndCMethodInliningInReleaseBuildCallStacks.aspx,如果JITter内联方法调用,它确实会在堆栈跟踪中折叠.如果您不希望它内联(这可能不是一个好主意),您可以使用
[MethodImpl(MethodImplOptions.NoInlining)] 关于方法.对于exe,您还可以使用INI文件告诉JITter生成跟踪信息(在链接页面的底部),但我不确定这对ASP.NET应用程序有何用处. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – Chrome中的样式问题与datalist
- NHibernate中关于Inverse的理解和使用
- 在ASP.NET C#中直接打印Crystal报表
- asp.net-web-api – 用于IONIC2应用程序和Identity Server4
- asp.net – 某些企业库应用程序块是否已过时?
- asp.net-mvc – ASP.NET MVC 3解决方案结构,数据引用和Auto
- 需要在asp.net中以分钟为单位查找音频文件的长度
- asp.net-mvc – asp.net mvc局部视图错误输出
- asp.net-mvc-3 – 无法加载文件或程序集’StructureMap,Ver
- ASP.NET Core部署在IIS中后,报无法打开登录所请求的数据库
推荐文章
站长推荐
- MS Chart与ASP.NET图表类型“列”不显示轴x标签,
- asp.net-mvc – F#Asp.Net CodeDom ProviderOpti
- WeihanLi.Npoi 1.7.0 更新
- asp.net – ReportViewer – 隐藏PDF导出
- asp.net – ORA-01036:非法变量名/号C#(SqlData
- asp.net-mvc-4 – 使用HTML.ActionLink调用Post方
- asp.net-mvc – 将解决方案分成不同的项目
- regex – RegularExpressionAttribute – 如何使
- asp.net – 在SDL Tridion 2011中将JSON文件上传
- asp.net-mvc-4 – 将模型从View传递给Controller
热点阅读