> Certainly we can change to not inline by combining both fixes. I don’t > think inline is necessary causing problem but that means header and the > binary does need to match.
How about use macro instead of function? +#define getTimeMicros() ({ \ + uint64_t result = 0; \ + struct timeval tv; \ + if (gettimeofday(&tv, NULL) != -1) { \ + result = 1000000LL * (uint64_t)tv.tv_sec; \ + result += (uint64_t)tv.tv_usec; \ + } \ + result; \ +}) I have tested it works on linux, not sure whether it is ok for solaris. BRs, Lin On 2020/4/6, 3:37 AM, "Henry Jen" <henry....@oracle.com> wrote: > On Apr 5, 2020, at 6:52 AM, Alan Bateman <alan.bate...@oracle.com> wrote: > > > On 05/04/2020 14:17, David Holmes wrote: >> On 4/04/2020 3:13 pm, Henry Jen wrote: >>> Internal test shows that inline implementation is not working for some Solaris artifacts, because the -DHAVE_GETHRTIME is not consistently defined, so it is actually broken. :) >> >> The problem is in defining that function as inline rather than the -DHAVE_GETHRTIME. >> >>>> [2020-04-03T15:59:26,981Z] Creating support/test/hotspot/jtreg/native/bin/jvm-test-launcher from 1 file(s) >> >> The build rules for this special test launcher need to be examined as something seems wrong to me. > I assume it's just that it's just compiled differently to the regular launchers and just not noticed that it was missing -DHAVE_GETHRTIME (unless for anyone to use it with _JAVA_LAUNCHER_DEBUG set). This is my understanding as well, we built something without define -DHAVA_GETHRTIME but linked with the library that was built with that defined and use inline function. We won’t notice this before because CounterGet is no-op before. > If we go with Henry's second webrev then I assume -DHAVE_GETHRTIME can be dropped from LauncherCommon.gmk to avoid confusing any further maintainers in this area. Right, I can drop that as well. > Also is there a strong need for the non-Solaris getTimeMicros to have be inline? > Certainly we can change to not inline by combining both fixes. I don’t think inline is necessary causing problem but that means header and the binary does need to match. Cheers, Henry