作为Java程序的JIT编译结果,我得到了以下程序集列表。
mov 0x14(%rsp),%r10d
inc %r10d
mov 0x1c(%rsp),%r8d
inc %r8d
test %eax,(%r11) ; <--- this instruction
mov (%rsp),%r9
mov 0x40(%rsp),%r14d
mov 0x18(%rsp),%r11d
mov %ebp,%r13d
mov 0x8(%rsp),%rbx
mov 0x20(%rsp),%rbp
mov 0x10(%rsp),%ecx
mov 0x28(%rsp),%rax
movzbl 0x18(%r9),%edi
movslq %r8d,%rsi
cmp 0x30(%rsp),%rsi
jge 0x00007fd3d27c4f17
我对test
指令的理解在这里是没有用的,因为测试的主要思想是
标记SF,ZF,PF被修改,而AND的结果被丢弃。
在这里,我们不使用这些结果标志。
是JIT中的错误还是我错过了什么?如果是,最好的报告地点在哪里?谢谢!
那一定是线程本地握手poll。看%r11
从哪里读取。如果是从%r15
(线程本地存储)偏移量读取的,那就是家伙。在这里查看示例:
0.31% ↗ ...70: movzbl 0x94(%r9),%r10d
0.19% │ ...78: mov 0x108(%r15),%r11 ; read the thread-local page addr
25.62% │ ...7f: add $0x1,%rbp
35.10% │ ...83: test %eax,(%r11) ; thread-local handshake poll
34.91% │ ...86: test %r10d,%r10d
╰ ...89: je ...70
它不是没有用的,一旦将防护页标记为不可读,就会导致SEGV,并将控制权转移到JVM的SEGV处理程序。这是JVM安全点Java线程(例如用于GC)机制的一部分。
UPD:希望在这里有更多详细信息。
Vue CLI 提供了预配置的单元测试和 e2e 测试安装。 如果你有兴趣为 *.vue 文件手动设置单元测试,请查询 @vue/test-utils 的文档,这份文档涵盖了对 mocha-webpack 或 Jest 的设置。
问题内容: 我正在使用Jasmine编写AngularJS的指令测试,并与它们一起使用templateUrl:https : //gist.github.com/tanepiper/62bd10125e8408def5cc 但是,当我运行测试时,我得到了要点中包含的错误: 从我在文档中阅读的内容来看,我认为自己做得正确,但是事实并非如此-我在这里想念的是什么? 谢谢 问题答案: 如果您使用的是ng
问题内容: 我有以下指令。 当我测试它时: 我收到一个错误消息,说对象没有addWiki方法。我尝试调试它,并且在测试过程中未调用链接函数。我怀疑这就是为什么addWiki方法不属于范围的原因。有人知道为什么我会收到此错误吗? 顺便说一句,在指令的链接函数中添加一些逻辑是正常的做法,因为它本身就是Controller?因为看代码我知道这就是为什么我在做。 问题答案: 您需要加载该模块包含您的指示,
测试 测试业务逻辑 GET /users/:id 这个业务是根据用户的 id 从数据库取到该用户数据,如果用户不存在则返回404和提示语句。 创建 User POST /users 接受 JSON 格式的数据。 创建成功返回 201 - Created。 发生错误返回 500 - Internal Server Error。 获取 User GET /users/:email 获取成功返回 200
问题内容: 如果我有一个指令可以响应示波器上特定属性的状态,并且我想在测试中更改该属性并验证其是否正确响应,那是进行此更改的最佳方法? 我已经看过这两种模式: 和 它们之间有什么区别,哪个更好,为什么? 问题答案: 会在当前范围及其所有子级上触发监视程序。将评估传递的函数并运行。 第一个更快,因为它需要评估观察者的当前范围及其子级。第二个比较慢,因为它需要评估观察者及其所有子作用域。 当其中一个观
问题内容: 因此,我确实看到了另一个问题:如何在指令UT中模拟所需的指令控制器,这基本上是我的问题,但似乎该线程的答案是“更改设计”。我想确保没有办法做到这一点。我有一个指令声明一个由子指令使用的控制器。我现在正尝试为children指令编写茉莉花测试,但由于它们依赖于控制器,因此我无法让它们在测试中进行编译。看起来是这样的: 子指令: 茉莉花测试: 我没有办法用茉莉花测试子指令吗?如果可以,我会