aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/codegen/CompilerContext.cpp
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-09-16 10:46:29 +0800
committerGitHub <noreply@github.com>2017-09-16 10:46:29 +0800
commita0d171722a211720773aae0ded8a80991d44ba9d (patch)
treeae1376cd7d128573edb235f92191dd30118d07bf /libsolidity/codegen/CompilerContext.cpp
parent7dd372ce5c9ea1cacf2c70a16f0285bb74314db8 (diff)
parent80ce3ca66f063d8d87c2393e689f92d8608b4e0a (diff)
downloaddexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar
dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.gz
dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.bz2
dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.lz
dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.xz
dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.tar.zst
dexon-solidity-a0d171722a211720773aae0ded8a80991d44ba9d.zip
Merge pull request #2823 from ethereum/iuliaCompressor
Combine all ABI functions into a single assembly.
Diffstat (limited to 'libsolidity/codegen/CompilerContext.cpp')
-rw-r--r--libsolidity/codegen/CompilerContext.cpp16
1 files changed, 3 insertions, 13 deletions
diff --git a/libsolidity/codegen/CompilerContext.cpp b/libsolidity/codegen/CompilerContext.cpp
index ed780d0b..5a77162e 100644
--- a/libsolidity/codegen/CompilerContext.cpp
+++ b/libsolidity/codegen/CompilerContext.cpp
@@ -266,19 +266,9 @@ void CompilerContext::resetVisitedNodes(ASTNode const* _node)
void CompilerContext::appendInlineAssembly(
string const& _assembly,
vector<string> const& _localVariables,
- map<string, string> const& _replacements
+ bool _system
)
{
- string replacedAssembly;
- string const* assembly = &_assembly;
- if (!_replacements.empty())
- {
- replacedAssembly = _assembly;
- for (auto const& replacement: _replacements)
- replacedAssembly = boost::algorithm::replace_all_copy(replacedAssembly, replacement.first, replacement.second);
- assembly = &replacedAssembly;
- }
-
int startStackHeight = stackHeight();
julia::ExternalIdentifierAccess identifierAccess;
@@ -320,7 +310,7 @@ void CompilerContext::appendInlineAssembly(
ErrorList errors;
ErrorReporter errorReporter(errors);
- auto scanner = make_shared<Scanner>(CharStream(*assembly), "--CODEGEN--");
+ auto scanner = make_shared<Scanner>(CharStream(_assembly), "--CODEGEN--");
auto parserResult = assembly::Parser(errorReporter).parse(scanner);
solAssert(parserResult, "Failed to parse inline assembly block.");
solAssert(errorReporter.errors().empty(), "Failed to parse inline assembly block.");
@@ -329,7 +319,7 @@ void CompilerContext::appendInlineAssembly(
assembly::AsmAnalyzer analyzer(analysisInfo, errorReporter, false, identifierAccess.resolve);
solAssert(analyzer.analyze(*parserResult), "Failed to analyze inline assembly block.");
solAssert(errorReporter.errors().empty(), "Failed to analyze inline assembly block.");
- assembly::CodeGenerator::assemble(*parserResult, analysisInfo, *m_asm, identifierAccess);
+ assembly::CodeGenerator::assemble(*parserResult, analysisInfo, *m_asm, identifierAccess, _system);
}
FunctionDefinition const& CompilerContext::resolveVirtualFunction(