void * os::dll_load(const char *filename, char *ebuf, int ebuflen) {
...
if (os::uses_stack_guard_pages() && !os::Linux::_stack_is_executable) {
ElfFile ef(filename);
if (!ef.specifies_noexecstack()) {
the ElfFile calls load_table() which creates a lot of data structure, but specifies_noexecstack just checks for a little bit of info specified in the header. As a result, we may unnecessarily spend a lot of time with large .so files.
...
if (os::uses_stack_guard_pages() && !os::Linux::_stack_is_executable) {
ElfFile ef(filename);
if (!ef.specifies_noexecstack()) {
the ElfFile calls load_table() which creates a lot of data structure, but specifies_noexecstack just checks for a little bit of info specified in the header. As a result, we may unnecessarily spend a lot of time with large .so files.