File tree Expand file tree Collapse file tree 3 files changed +17
-12
lines changed Expand file tree Collapse file tree 3 files changed +17
-12
lines changed Original file line number Diff line number Diff line change @@ -518,11 +518,21 @@ bool Assembly::addAssemblyItemsFromJSON(Json::Value const& _code)
518
518
return true ;
519
519
}
520
520
521
- bool Assembly::loadFromAssemblyJSON (Json::Value const & _json)
521
+ bool Assembly::loadFromAssemblyJSON (Json::Value const & _json, bool _loadSources /* = true */ )
522
522
{
523
523
if (!_json[" .code" ].isArray ())
524
524
return false ;
525
525
bool result{true };
526
+
527
+ if (_loadSources)
528
+ {
529
+ vector<string> sourceList;
530
+ if (_json.isMember (" sourceList" ))
531
+ for (auto const & it: _json[" sourceList" ])
532
+ sourceList.emplace_back (it.asString ());
533
+ setSources (sourceList);
534
+ }
535
+
526
536
addAssemblyItemsFromJSON (_json[" .code" ]);
527
537
if (_json[" .auxdata" ].isString ())
528
538
this ->m_auxiliaryData = fromHex (_json[" .auxdata" ].asString ());
@@ -538,7 +548,7 @@ bool Assembly::loadFromAssemblyJSON(Json::Value const& _json)
538
548
{
539
549
shared_ptr<Assembly> subassembly = make_shared<Assembly>();
540
550
subassembly->setSources (this ->sources ());
541
- result &= subassembly->loadFromAssemblyJSON (code);
551
+ result &= subassembly->loadFromAssemblyJSON (code, false );
542
552
this ->m_subs .emplace_back (subassembly);
543
553
}
544
554
}
Original file line number Diff line number Diff line change 39
39
#include < sstream>
40
40
#include < memory>
41
41
#include < map>
42
+ #include < utility>
42
43
43
44
namespace solidity ::evmasm
44
45
{
@@ -159,7 +160,7 @@ class Assembly
159
160
bool _includeSourceList = true
160
161
) const ;
161
162
162
- bool loadFromAssemblyJSON (Json::Value const & _json);
163
+ bool loadFromAssemblyJSON (Json::Value const & _json, bool _loadSources = true );
163
164
164
165
// / Mark this assembly as invalid. Calling ``assemble`` on it will throw.
165
166
void markAsInvalid () { m_invalid = true ; }
@@ -168,7 +169,7 @@ class Assembly
168
169
size_t encodeSubPath (std::vector<size_t > const & _subPath);
169
170
170
171
void setSources (std::vector<std::shared_ptr<std::string const >> _sources) {
171
- m_sources = _sources;
172
+ m_sources = std::move ( _sources) ;
172
173
}
173
174
174
175
void setSources (std::vector<std::string> const & _sources) {
Original file line number Diff line number Diff line change @@ -685,20 +685,14 @@ bool CompilerStack::compile(State _stopAfter)
685
685
optimiserSettings.runJumpdestRemover = m_optimiserSettings.runJumpdestRemover ;
686
686
optimiserSettings.runPeephole = m_optimiserSettings.runPeephole ;
687
687
688
- vector<string> sourceList;
689
- if (m_evmAssemblyJson[evmAssemblyJsonSource].isMember (" sourceList" ))
690
- for (auto const & it: m_evmAssemblyJson[evmAssemblyJsonSource][" sourceList" ])
691
- sourceList.emplace_back (it.asString ());
692
-
693
688
m_contracts[evmAssemblyJsonSource].evmAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource);
694
- m_contracts[evmAssemblyJsonSource].evmAssembly ->setSources (sourceList);
695
689
m_contracts[evmAssemblyJsonSource].evmAssembly ->loadFromAssemblyJSON (m_evmAssemblyJson[evmAssemblyJsonSource]);
696
690
m_contracts[evmAssemblyJsonSource].evmAssembly ->optimise (optimiserSettings);
697
691
m_contracts[evmAssemblyJsonSource].object = m_contracts[evmAssemblyJsonSource].evmAssembly ->assemble ();
698
692
699
693
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly = make_shared<evmasm::Assembly>(evmAssemblyJsonSource);
700
- m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->setSources (sourceList );
701
- m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->loadFromAssemblyJSON (m_evmAssemblyJson[evmAssemblyJsonSource][" .data" ][" 0" ]);
694
+ m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->setSources (m_contracts[evmAssemblyJsonSource]. evmAssembly -> sources () );
695
+ m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->loadFromAssemblyJSON (m_evmAssemblyJson[evmAssemblyJsonSource][" .data" ][" 0" ], false );
702
696
m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->optimise (optimiserSettings);
703
697
m_contracts[evmAssemblyJsonSource].runtimeObject = m_contracts[evmAssemblyJsonSource].evmRuntimeAssembly ->assemble ();
704
698
}
You can’t perform that action at this time.
0 commit comments