P. S. However since it uses blocks, I actually patch the old version of it
in.
I think it stayed unchanged until a switch to block syntax.
This version builds with gcc:
https://github.com/nilsvanvelzen/mac_ppc_openjdk8u60/blob/13588c0d5b72226938a2f8793fa92aabf15ab0a0/jdk/src/macosx/bin/java_md_macosx.c#L1034-L1063
But we get that warnings on start-up.


On Tue, Jul 16, 2024 at 10:48 PM Sergey Fedorov <vital....@gmail.com> wrote:

> Thank you, Ken.
>
> This is the reference to the current code in OpenJDK 8:
> https://github.com/openjdk/jdk8u/blob/105098218562ce8b62938fb7def2cde918df0b45/jdk/src/macosx/bin/java_md_macosx.c#L1027-L1062
>
>
> On Tue, Jul 16, 2024 at 10:45 PM Ken Cunningham <
> ken.cunningham.web...@gmail.com> wrote:
>
>> The usual equivalent older construct is this:
>>
>>
>> NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
>> {
>>
>> }
>> [pool drain];
>>
>>
>> which (AFAIK) does exactly the same thing as:
>>
>> @autoreleasepool
>> {
>>
>> }
>>
>> but just a little less beautifully.
>>
>> Now the commit you referenced has this older construct still in place.
>> But I didn't look at the current source code that you are compiling to see
>> what it has.
>>
>> Ken
>>
>> NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
>> { } [pool drain];
>> > On Jul 16, 2024, at 7:17 AM, Sergey Fedorov <vital....@gmail.com>
>> wrote:
>> >
>> > On Tue, Jul 16, 2024 at 6:19 PM Saagar Jha <saa...@saagarjha.com>
>> wrote:
>> > I’m guessing that since the block runs elsewhere there isn’t an
>> autoreleasepool for it anymore. You can probably fix this by wrapping the
>> call to JavaMain in @autoreleasepool {}?
>> > Saagar Jha
>> >
>> > This syntax is not supported by GCC, we need to use a standard ObjC
>> somehow.
>> >
>> >>
>> >> On Jul 10, 2024, at 02:47, Riccardo Mottola via macports-dev <
>> macports-dev@lists.macports.org> wrote:
>> >>
>> >> Hi,
>> >>
>> >> Sergio Had wrote:
>> >>> I have finally built the thing and it works, from looks of things,
>> but I get a message on startup:
>> >>> 36-25%
>> /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_java_openjdk8/openjdk8/work/jdk8u-jdk8u372-ga/build/openjdk8/images/j2sdk-image/bin/java
>> -version
>> >>> 2024-07-09 18:34:10.587 java[13785:1903] *** __NSAutoreleaseNoPool():
>> Object 0x5d12e50 of class NSCFDictionary autoreleased with no pool in place
>> - just leaking
>> >>> 2024-07-09 18:34:10.590 java[13785:1903] *** __NSAutoreleaseNoPool():
>> Object 0x5d13310 of class NSCFData autoreleased with no pool in place -
>> just leaking
>> >>> openjdk version "1.8.0_372"
>> >>> OpenJDK Runtime Environment (build
>> 1.8.0_372-root_2024_07_09_15_56-b00)
>> >>> OpenJDK Zero VM (build 25.372-b00, interpreted mode)
>> >>>
>> >>> This seems to be related to the code, which upstream has switched to
>> block syntax (it does not build with GCC), so I had to use its earlier
>> version.
>> >>> From commit message it seems upstream also had this startup issue:
>> >>>
>> https://github.com/openjdk/jdk8u/commit/c29d997ca180ba5d812df7745c668cfc906be20b
>> >>
>> >> the message tells you that you are using NS* objects without an
>> Autorelease Pool. It will cause issues, but "should work", so your app
>> should run.
>> >> I notice what they appear to be CoreFoundation bridge object. You
>> should try to track where they come from, maybe put a breakpoint and
>> stacktrace.
>> >>
>> >> The snipped seen in the commit looks trivial, no nsblocks needed and
>> has an fresh ARP allocated, so I think the issue is elsewhere.
>> >>
>> >> Riccardo
>> >
>>
>>

Reply via email to