[PATCH] Support to lazily load Metadata

Manman Ren mren at apple.com
Fri Feb 27 11:11:06 PST 2015


Hi All,

This patch defers loading of Metadata until we materialize a module, a function or explicitly the Metadata.

In this patch, we only enable lazy loading of Metadata when creating LTOModule in local contexts.
These can only really be used for parsing symbols, so it's unnecessary to ever load the metadata blocks.

Implementation —————
We add a parameter called ShouldLazyLoadMetadata to a few functions.

We only defer loading metadata inside ParseModule when ShouldLazyLoadMetadata
is true and we have not loaded any Metadata block yet.

This commit implements all-or-nothing loading of Metadata. If there is a
request to load any metadata block, we will load all deferred metadata blocks.

We make sure the deferred metadata blocks are loaded before we materialize any
function or a module.

The default value of the added parameter ShouldLazyLoadMetadata for
getLazyBitcodeModule is false, so the default behavior stays the same.

Next Step —————
If we are going to enable lazy-loading of Metadata for other usages of
getLazyBitcodeModule, where deferred metadata blocks need to be loaded, we can
expose BitcodeReader::materializeMetadata to Module, similar to
Module::materialize.

Thanks for reviewing!
Manman

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Add-a-parameter-for-getLazyBitcodeModule-to-lazily-l.patch
Type: application/octet-stream
Size: 13273 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150227/b133844f/attachment.obj>


More information about the llvm-commits mailing list