On Sun, 27 Apr 2025 02:04:30 GMT, Chen Liang <li...@openjdk.org> 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

Reply via email to