On 2019-04-04 22:23, Ioi Lam wrote:
On 4/4/19 10:08 PM, David Holmes wrote:
Adding back build-dev
On 5/04/2019 2:41 pm, Ioi Lam wrote:
#define THIS_FILE (__FILE__ + FILE_MACRO_OFFSET)
This make me a little uneasy, as it could potential point past the
end of the string.
The intent of course is that that is impossible:
- _FILE_ is an absolute file path within the repo: /something/repo/file
- FILE_MACRO_OFFSET gets you from / to the top-level repo directory
leaving "file"
so it has to be in bounds.
For safety, Is it possible to get some sort of assert to make sure
that __FILE__ always has more than FILE_MACRO_OFFSET characters?
Maybe we can add a static object in macros.hpp with a constructor
that puts __FILE__ into a list, and then we can walk the list when
the VM starts up? E.g.
...
#ifdef ASSERT
static ThisFileChecker __this_file_checker(__FILE__);
#endif
#endif // SHARE_UTILITIES_MACROS_HPP
So basically you're not trusting the compiler and build system to be
correct here. :)
I am sure the build system is correct ..... but it's complicated.
BTW, we actually have generated sources that can live outside of the
source repo. And with luck, their names can actually be shorter than
FILE_MACRO_OFFSET.
That is a very good point, completely forgot about that case. I retract
my current proposal.
/Erik
$ cd /tmp/mybld
$ find . -name \*.cpp
./hotspot/variant-server/support/adlc/ad_x86_expand.cpp
./hotspot/variant-server/support/adlc/ad_x86_pipeline.cpp
./hotspot/variant-server/support/adlc/ad_x86_format.cpp
./hotspot/variant-server/support/adlc/dfa_x86.cpp
./hotspot/variant-server/support/adlc/ad_x86_misc.cpp
./hotspot/variant-server/support/adlc/ad_x86_gen.cpp
./hotspot/variant-server/support/adlc/ad_x86.cpp
./hotspot/variant-server/support/adlc/ad_x86_peephole.cpp
./hotspot/variant-server/support/adlc/ad_x86_clone.cpp
./hotspot/variant-server/gensrc/adfiles/ad_x86_expand.cpp
./hotspot/variant-server/gensrc/adfiles/ad_x86_pipeline.cpp
./hotspot/variant-server/gensrc/adfiles/ad_x86_format.cpp
./hotspot/variant-server/gensrc/adfiles/dfa_x86.cpp
./hotspot/variant-server/gensrc/adfiles/ad_x86_misc.cpp
./hotspot/variant-server/gensrc/adfiles/ad_x86_gen.cpp
./hotspot/variant-server/gensrc/adfiles/ad_x86.cpp
./hotspot/variant-server/gensrc/adfiles/ad_x86_peephole.cpp
./hotspot/variant-server/gensrc/adfiles/ad_x86_clone.cpp
./hotspot/variant-server/gensrc/jvmtifiles/jvmtiEnter.cpp
./hotspot/variant-server/gensrc/jvmtifiles/bytecodeInterpreterWithChecks.cpp
./hotspot/variant-server/gensrc/jvmtifiles/jvmtiEnterTrace.cpp
Would it suffice to put a static assert in a common header, like
macros.hpp, that verifies the length of _FILE_ or is that not
available statically?
I don't know how a static assert would work. That's why I suggested
the static object with a constructor.
Thanks
- Ioi
Cheers,
David
Thanks
- Ioi
On 4/4/19 9:04 PM, David Holmes wrote:
Hi Erik,
Build and hotspot changes seem okay.
Thanks,
David
On 5/04/2019 8:03 am, Erik Joelsson wrote:
On 2019-04-04 14:26, Kim Barrett wrote:
OK, I can do that.
------------------------------------------------------------------------------
src/hotspot/share/utilities/macros.hpp
645 #if FILE_MACRO_OFFSET
646 #define THIS_FILE (__FILE__ + FILE_MACRO_OFFSET)
647 #else
648 #define THIS_FILE __FILE__
649 #endif
Is the "#if FILE_MACRO_OFFSET" an intentional test for 0, or is this
an implicit test for "defined"?
If the former, e.g. we're assuming it will always be defined but
might
have a 0 value, then I'd skip it and just unconditionally define
THIS_FILE as (__FILE__ + FILE_MACRO_OFFSET).
Right, that makes sense. I was sort of hedging for all
possibilities here, but as the build logic is currently
structured, it will always be defined, just sometimes 0.
New webrev: http://cr.openjdk.java.net/~erikj/8221851/webrev.02/
/Erik
If the latter, some compilers will (with some warning levels or
options, such as gcc -Wundef) complain about the (specified by the
standard) implicit conversion to 0 for an unrecognized identifier in
an #if expression, and an #ifdef should be used to protect against
that.
------------------------------------------------------------------------------