The mysterious constant pool tag #2

x4e_x4e x4e_x4e at
Thu Jan 14 08:27:00 UTC 2021

Wow, thank you Alex, that’s very interesting to see.
The same RFE also solves the mystery of tag 13, saying:

> The CONSTANT_Group tag 13 lies in a gap previously left open for the module system in the JDK 7 time frame.
Thank You for the help!

On Wed, Jan 13, 2021 at 11:14 pm, Alex Buckley <alex.buckley at> wrote:

> A knowledgeable correspondent pointed me to an RFE from John Rose:
> which contains the info we seek:
> "The code 2 has been held open under the name CONSTANT_Unicode
> but has never been used, probably because of the wide adoption
> of UTF8 for string data."
> Alex
> On 1/13/2021 1:08 PM, Alex Buckley wrote:
>> The earliest JVM Spec listed on is actually the Second
>> Edition from 1999, specifying Java 1.2:
>> It's listed under Java SE 6 due to a complicated update history, not
>> relevant here.
>> In any case, you're right that constant pool tag 2 was not defined in
>> even the First Edition from 1996. I have information about many
>> historical artifacts in the JVM Spec, but not this. Since tag 1 is
>> CONSTANT_Utf8, and since the ClassFile's UTF-8 isn't exactly UTF-8, and
>> since tags for numeric constants start rather clearly at 3, I'd guess
>> that tag 2 was once another string encoding, perhaps CONSTANT_Utf16.
>> Alex
>> On 1/13/2021 11:28 AM, x4e_x4e wrote:
>>> Hello,
>>> I am attempting to find the purpose of the seemingly abandoned
>>> constant pool tag number 2.
>>> My guess is that the item type denoted by this tag was removed and the
>>> tag was never reclaimed.
>>> I've attempted to locate the earliest possible JVM spec including this
>>> constant tag - to no avail.
>>> The earliest spec listed on is
>>> the SE 6 spec, which does not include the tag.
>>> I did however find the original JSR catalog
>>> (, however it is unclear which JSR contains
>>> the first JVM specification (Many links 404 and earlier specifications
>>> only cover the language side of things).
>>> As far as I can tell, this is the first final release JVM
>>> specification:
>>> however, once again, it seems that there is no constant tag number 2.
>>> I am wondering if anyone here (probably someone involved in the early
>>> JVM design) knows the original purpose of tag number 2?
>>> Thank You.
>>> PS: I found that you can actually buy the original JVM specification
>>> on amazon
>>> (
>>> - even new!
>>> JSth

More information about the jdk-dev mailing list