From b940dd529a2b5ff90193143d1da29f960a8460af Mon Sep 17 00:00:00 2001 From: Zhong Zhuang Date: Tue, 13 Mar 2018 19:00:51 +0800 Subject: [PATCH] common/compiler: support 'optimize-runs' arg for solc --- common/compiler/solidity.go | 10 ++++++++++ common/compiler/solidity_test.go | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/common/compiler/solidity.go b/common/compiler/solidity.go index 234714a2b9..75ba03847b 100644 --- a/common/compiler/solidity.go +++ b/common/compiler/solidity.go @@ -31,6 +31,8 @@ import ( var versionRegexp = regexp.MustCompile(`([0-9]+)\.([0-9]+)\.([0-9]+)`) +var optimizeRuns int64 = 200 + type Contract struct { Code string `json:"code"` Info ContractInfo `json:"info"` @@ -67,12 +69,20 @@ func (s *Solidity) makeArgs() []string { "--combined-json", "bin,abi,userdoc,devdoc", "--optimize", // code optimizer switched on } + if optimizeRuns != 200 { + p = append(p, "-optimize-runs",strconv.FormatInt(optimizeRuns, 10)) + } if s.Major > 0 || s.Minor > 4 || s.Patch > 6 { p[1] += ",metadata" } return p } +// SetOptimizeRuns set the number of optimize runs for solc +func SetOptimizeRuns(_optimizeRuns int64) { + optimizeRuns = _optimizeRuns +} + // SolidityVersion runs solc and parses its version output. func SolidityVersion(solc string) (*Solidity, error) { if solc == "" { diff --git a/common/compiler/solidity_test.go b/common/compiler/solidity_test.go index 0da3bb337e..107b7473c9 100644 --- a/common/compiler/solidity_test.go +++ b/common/compiler/solidity_test.go @@ -40,7 +40,7 @@ func skipWithoutSolc(t *testing.T) { func TestCompiler(t *testing.T) { skipWithoutSolc(t) - + SetOptimizeRuns(2000) contracts, err := CompileSolidityString("", testSource) if err != nil { t.Fatalf("error compiling source. result %v: %v", contracts, err)