On Sun, 27 Apr 2025 02:04:30 GMT, Chen Liang <[email protected]> wrote:
> Internal explicit counter support for Code max_stack and max_locals has been
> already added in #24807. Since that example works well, we may consider
> opening this functionality up to general users under strict restrictions.
>
> This is an advanced API; thus, I chose a more complex name
> `withExplicitStackAndLocals` that discourages accidental use, and indicates
> the exact order of stack and locals arguments. For integrity, the argument
> checks are unconditional. And this is also barred behind `DROP_STACK_MAPS`
> advanced option.
>
> I have enhanced the tests with a `CodeBuilderType` utility to test all types
> of code builders; it is already effective at increasing coverage in some of
> our existing tests that only cover DirectCodeBuilder, and simplify other
> tests. It is particularly helpful for my new `BuilderExplicitMaxsTest`.
test/jdk/jdk/classfile/BuilderExplicitMaxsTest.java line 67:
> 65: void testValidArgs(ClassFile.StackMapsOption stackMapsOption,
> CodeBuilderType builderType) {
> 66: var cc = ClassFile.of(stackMapsOption);
> 67: var bytes = cc.build(ClassDesc.of("Foo"),
> builderType.asClassHandler("foo", MTD_void, 0, cob -> cob
var bytes = cc.build(
ClassDesc.of("Foo"),
builderType.asClassHandler(
"foo",
MTD_void,
0,
cob -> cob.return_()
.withExplicitStackAndLocals(2, 3)));
This might be more readable.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24903#discussion_r2061984210