Java Bytecode DUP

前端 未结 2 1595
孤街浪徒
孤街浪徒 2021-02-14 16:46

I am wondering why the Exception in the following bytecode (used to throw an Exception) is duplicated.

NEW java/lang/IllegalArgumentException
DUP
INVOKESPECIAL j         


        
2条回答
  •  滥情空心
    2021-02-14 17:15

    In byte code, an object is first created by class, and then a constructor is called on that object. The signature of a constructor ends with V for void as it does return anything. This means a copy of the original reference to the object must be kept on the stack (or in a variable) so it can be thrown after the constructor is called.

    BTW The internal name for a constructor is and the internal name for a static initialiser code is

提交回复
热议问题