Skip to content

Commit

Permalink
Simplify the shim code (#53)
Browse files Browse the repository at this point in the history
  • Loading branch information
axic authored Jun 25, 2020
1 parent 6c6953d commit f6091c0
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 23 deletions.
26 changes: 8 additions & 18 deletions binaryen-sys/Shim.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,22 +57,8 @@ extern "C" void BinaryenShimDisposeBinaryenModuleAllocateAndWriteResult(
}
}

// NOTE: this is based on BinaryenModuleOptimizer from binaryen-c.cpp
// Main benefit is being thread safe.
extern "C" void BinaryenModuleOptimizeWithSettings(
BinaryenModuleRef module, int shrinkLevel, int optimizeLevel, int debugInfo
) {
Module* wasm = (Module*)module;
PassRunner passRunner(wasm);
passRunner.options = PassOptions::getWithDefaultOptimizationOptions();
passRunner.options.shrinkLevel = shrinkLevel;
passRunner.options.optimizeLevel = optimizeLevel;
passRunner.options.debugInfo = debugInfo != 0;
passRunner.addDefaultOptimizationPasses();
passRunner.run();
}

// NOTE: this is based on BinaryenModuleRunPasses from binaryen-c.cpp
// NOTE: this is based on BinaryenModuleRunPasses and BinaryenModuleOptimizer
// from binaryen-c.cpp
// Main benefit is being thread safe.
extern "C" void BinaryenModuleRunPassesWithSettings(
BinaryenModuleRef module, const char** passes, BinaryenIndex numPasses,
Expand All @@ -84,8 +70,12 @@ extern "C" void BinaryenModuleRunPassesWithSettings(
passRunner.options.shrinkLevel = shrinkLevel;
passRunner.options.optimizeLevel = optimizeLevel;
passRunner.options.debugInfo = debugInfo != 0;
for (BinaryenIndex i = 0; i < numPasses; i++) {
passRunner.add(passes[i]);
if (passes == nullptr) {
passRunner.addDefaultOptimizationPasses();
} else {
for (BinaryenIndex i = 0; i < numPasses; i++) {
passRunner.add(passes[i]);
}
}
passRunner.run();
}
Expand Down
4 changes: 0 additions & 4 deletions binaryen-sys/wrapper.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@ void BinaryenShimDisposeBinaryenModuleAllocateAndWriteResult(
BinaryenModuleAllocateAndWriteResult result
);

void BinaryenModuleOptimizeWithSettings(
BinaryenModuleRef module, int shrinkLevel, int optimizeLevel, int debugInfo
);

void BinaryenModuleRunPassesWithSettings(
BinaryenModuleRef module, const char** passes, BinaryenIndex numPasses,
int shrinkLevel, int optimizeLevel, int debugInfo
Expand Down
4 changes: 3 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,10 @@ impl Module {
/// Run the standard optimization passes on the module.
pub fn optimize(&mut self, codegen_config: &CodegenConfig) {
unsafe {
ffi::BinaryenModuleOptimizeWithSettings(
ffi::BinaryenModuleRunPassesWithSettings(
self.inner.raw,
std::ptr::null_mut(),
0 as u32,
codegen_config.shrink_level as i32,
codegen_config.optimization_level as i32,
codegen_config.debug_info as i32,
Expand Down

0 comments on commit f6091c0

Please sign in to comment.