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 >> > >> >>