mirror of
https://github.com/pezkuwichain/revive.git
synced 2026-10-27 14:09:54 +00:00
Add default values to compiler arguments (#451)
## Description
Adds default values to the compiler arguments below when parsed by
`clap`. This does not change previous user-facing behavior as these
defaults were implemented using different logic, but improves the UX and
the visibility of the exact defaults used.
**Example output from `resolc --help`:**
(Only affected arguments are shown here, and some of their descriptions
have been omitted here.)
```
Options:
-O, --optimization <OPTIMIZATION>
Set the optimization parameter -O[0 | 1 | 2 | 3 | s | z]. Use `3` for best performance and `z` for minimal size
[default: z]
--metadata-hash <METADATA_HASH>
Set the metadata hash type. Available types: `none`, `ipfs`, `keccak256`
[default: keccak256]
--heap-size <HEAP_SIZE>
The emulated EVM linear heap memory static buffer size in bytes.
...
[default: 131072]
--stack-size <STACK_SIZE>
The contracts total stack size in bytes.
...
[default: 131072]
```
## Resolved Issues
Closes #446
This commit is contained in:
4 files changed
+166
-65
No files matched your search
@@ -64,14 +64,7 @@ impl Settings {
|
||||
/// Creates settings from a CLI optimization parameter.
|
||||
pub fn try_from_cli(value: char) -> anyhow::Result<Self> {
|
||||
Ok(match value {
|
||||
'0' => Self::new(
|
||||
// The middle-end optimization level.
|
||||
inkwell::OptimizationLevel::None,
|
||||
// The middle-end size optimization level.
|
||||
SizeLevel::Zero,
|
||||
// The back-end optimization level.
|
||||
inkwell::OptimizationLevel::None,
|
||||
),
|
||||
'0' => Self::none(),
|
||||
'1' => Self::new(
|
||||
inkwell::OptimizationLevel::Less,
|
||||
SizeLevel::Zero,
|
||||
@@ -84,23 +77,14 @@ impl Settings {
|
||||
// The back-end does not currently distinguish between O1, O2, and O3.
|
||||
inkwell::OptimizationLevel::Default,
|
||||
),
|
||||
'3' => Self::new(
|
||||
inkwell::OptimizationLevel::Aggressive,
|
||||
SizeLevel::Zero,
|
||||
inkwell::OptimizationLevel::Aggressive,
|
||||
),
|
||||
'3' => Self::cycles(),
|
||||
's' => Self::new(
|
||||
// The middle-end optimization level is ignored when SizeLevel is set.
|
||||
inkwell::OptimizationLevel::Default,
|
||||
SizeLevel::S,
|
||||
inkwell::OptimizationLevel::Aggressive,
|
||||
),
|
||||
'z' => Self::new(
|
||||
// The middle-end optimization level is ignored when SizeLevel is set.
|
||||
inkwell::OptimizationLevel::Default,
|
||||
SizeLevel::Z,
|
||||
inkwell::OptimizationLevel::Aggressive,
|
||||
),
|
||||
'z' => Self::size(),
|
||||
char => anyhow::bail!("Unexpected optimization option '{}'", char),
|
||||
})
|
||||
}
|
||||
@@ -126,6 +110,7 @@ impl Settings {
|
||||
/// Returns the settings for the optimal size.
|
||||
pub fn size() -> Self {
|
||||
Self::new(
|
||||
// The middle-end optimization level is ignored when SizeLevel is set.
|
||||
inkwell::OptimizationLevel::Default,
|
||||
SizeLevel::Z,
|
||||
inkwell::OptimizationLevel::Aggressive,
|
||||
|
||||
Reference in new issue
Block a user