Skip to content

Commit

Permalink
add sysimg data variables to globalvars array
Browse files Browse the repository at this point in the history
  • Loading branch information
JeffBezanson authored and tkelman committed Jun 6, 2015
1 parent ca3cfb0 commit ece4d16
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
13 changes: 8 additions & 5 deletions src/cgutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -367,14 +367,17 @@ static void jl_gen_llvm_gv_array(llvm::Module *mod, SmallVector<GlobalVariable*,
#endif
}

static void jl_sysimg_to_llvm(llvm::Module *mod, const char *sysimg_data, size_t sysimg_len)
static void jl_sysimg_to_llvm(llvm::Module *mod, SmallVector<GlobalVariable*, 8> &globalvars,
const char *sysimg_data, size_t sysimg_len)
{
Constant *data = ConstantDataArray::get(jl_LLVMContext, ArrayRef<uint8_t>((const unsigned char*)sysimg_data, sysimg_len));
addComdat(new GlobalVariable(*mod, data->getType(), true, GlobalVariable::ExternalLinkage,
data, "jl_system_image_data"));
globalvars.push_back(addComdat(new GlobalVariable(*mod, data->getType(), true,
GlobalVariable::ExternalLinkage,
data, "jl_system_image_data")));
Constant *len = ConstantInt::get(T_size, sysimg_len);
addComdat(new GlobalVariable(*mod, len->getType(), true, GlobalVariable::ExternalLinkage,
len, "jl_system_image_size"));
globalvars.push_back(addComdat(new GlobalVariable(*mod, len->getType(), true,
GlobalVariable::ExternalLinkage,
len, "jl_system_image_size")));
}

static int32_t jl_assign_functionID(Function *functionObject)
Expand Down
7 changes: 4 additions & 3 deletions src/codegen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -387,7 +387,8 @@ struct jl_varinfo_t {

// --- helpers for reloading IR image
static void jl_gen_llvm_gv_array(llvm::Module *mod, SmallVector<GlobalVariable*, 8> &globalvars);
static void jl_sysimg_to_llvm(llvm::Module *mod, const char *sysimg_data, size_t sysimg_len);
static void jl_sysimg_to_llvm(llvm::Module *mod, SmallVector<GlobalVariable*, 8> &globalvars,
const char *sysimg_data, size_t sysimg_len);

extern "C"
void jl_dump_bitcode(char *fname)
Expand Down Expand Up @@ -489,12 +490,12 @@ void jl_dump_objfile(char *fname, int jit_model, const char *sysimg_data, size_t
SmallVector<GlobalVariable*, 8> globalvars;
#ifdef USE_MCJIT
if (sysimg_data)
jl_sysimg_to_llvm(shadow_module, sysimg_data, sysimg_len);
jl_sysimg_to_llvm(shadow_module, globalvars, sysimg_data, sysimg_len);
jl_gen_llvm_gv_array(shadow_module, globalvars);
PM.run(*shadow_module);
#else
if (sysimg_data)
jl_sysimg_to_llvm(jl_Module, sysimg_data, sysimg_len);
jl_sysimg_to_llvm(jl_Module, globalvars, sysimg_data, sysimg_len);
jl_gen_llvm_gv_array(jl_Module, globalvars);
PM.run(*jl_Module);
#endif
Expand Down

0 comments on commit ece4d16

Please sign in to comment.