我试图理解 JVM 字节码,但我遇到了以下代码:
58: invokeinterface #5, 1 // InterfaceMethod java/util/List.stream:()Ljava/util/stream/Stream;
63: invokedynamic #6, 0 // InvokeDynamic #0:test:()Ljava/util/function/Predicate;
68: invokeinterface #7, 2 // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
Run Code Online (Sandbox Code Playgroud)
似乎计数值总是nargs + 1(在 58 中:应该是 0 但为 1,在 68 中:应该是 1 但为 2)。
根据JVM 文档:
计数操作数是一个不能为零的无符号字节
这就是为什么一些参数似乎是nargs + 1 的原因吗?
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |