Thank you, Senaka!
I tried it and here what I discovered:
harmonyvm.dll has implicit dependency on zlib1.dll and actually calls functions from it. It also has explicit dependency on hyzlib.dll, but doesn't call it (dependency walker shows a big list of function calls over that module, non of them present in dll). Also hythr.dll has explicit dependency on hyzlib.dll and calls it's functions.

So I was wrong, and vm is actually using zlib1.dll, though it loads hyzlib.dll too.
And there's still zdll.lib, although dll's are loaded and being called.

Performance library in my work is not free, that's why I need to make 2 zlibs and make Harmony load one of them dynamically, depending on whether performance lib is installed or not. For that purpose zlib is required to be in one single place.

But for the first step it'll be ok if I test it on zlib, that is used by vm. So the question is for now, does vm uses zlib1.dll under Windows, or maybe zdll.lib is statically linked, and how it works under Linux?

Senaka Fernando wrote:
Hi Dmitry,

How about using dependency walker, if you are on windows?

Regards,
Senaka

On Sat, Apr 5, 2008 at 6:11 PM, Dmitry Egorov <[EMAIL PROTECTED]> wrote:

Hello, everyone!
I'm now working on zlib optimization using external performance library.
For now my goal is to make Harmony use my modified zlib code instead of the
one downloaded from the internet.
So I've been struggling with build system for quite a long time. As far as
I can understand now, both vm and classlib use hyzlib.dll (i'm currently
working in Windows), which is made by downloading and compiling zlib's
sources in classlib's buildfiles.

But I'm not sure, because there's code in vm's build files which downloads
zlib1.dll and zdll.lib. But I can't figure out whether vm is using it or
not. On the other side, I found that vm has code related to
hyzlib.dll in working_vm\vm\vmcore\src\init\vm_properties.cpp:
static const char *api_dll_files[] =
{
  "harmonyvm",
  "hythr",
#if !defined(HY_NO_SIG)
  "hysig",
#endif
  "hyprt",
#if defined(HY_LOCAL_ZLIB)
  "z",
#else
  "hyzlib",
#endif
  "hynio",
  "vmi",
  "hyluni",
  "hyarchive"
}; ...

My primary goal is to optimize vm's zlib performance to boost start up
time. So my question is whether vm is using hyzlib.dll or not?

Tim Ellison wrote:

Dmitry Egorov wrote:

Hello Mark, Tim,
Thank you for your idea!  We have discussed possible native
optimizations of jar and zip code with Alexei Fedotov and I'm
currently looking into this.

Great.  Looking through the JIRAs I see Alexei raised a 'double read'
issue.  You still have outstanding questions about this Alexei?

[1] http://issues.apache.org/jira/browse/HARMONY-5526

Regards,
Tim





Reply via email to