aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/inlineasm/AsmCodeGen.cpp
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-04-26 21:41:08 +0800
committerchriseth <chris@ethereum.org>2017-04-26 23:12:04 +0800
commitf3ec2ba39e7f4b85d148a7b696ef5af499fbb6fb (patch)
treebe9367a377cd81badbac4bbf6bdf5377586823b3 /libsolidity/inlineasm/AsmCodeGen.cpp
parent68218387cf29b3ce7de72aa0348e68dbdae29751 (diff)
downloaddexon-solidity-f3ec2ba39e7f4b85d148a7b696ef5af499fbb6fb.tar
dexon-solidity-f3ec2ba39e7f4b85d148a7b696ef5af499fbb6fb.tar.gz
dexon-solidity-f3ec2ba39e7f4b85d148a7b696ef5af499fbb6fb.tar.bz2
dexon-solidity-f3ec2ba39e7f4b85d148a7b696ef5af499fbb6fb.tar.lz
dexon-solidity-f3ec2ba39e7f4b85d148a7b696ef5af499fbb6fb.tar.xz
dexon-solidity-f3ec2ba39e7f4b85d148a7b696ef5af499fbb6fb.tar.zst
dexon-solidity-f3ec2ba39e7f4b85d148a7b696ef5af499fbb6fb.zip
Refactor to combined scope and stack height info.
Diffstat (limited to 'libsolidity/inlineasm/AsmCodeGen.cpp')
-rw-r--r--libsolidity/inlineasm/AsmCodeGen.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/libsolidity/inlineasm/AsmCodeGen.cpp b/libsolidity/inlineasm/AsmCodeGen.cpp
index 68d674f9..be52db46 100644
--- a/libsolidity/inlineasm/AsmCodeGen.cpp
+++ b/libsolidity/inlineasm/AsmCodeGen.cpp
@@ -26,6 +26,7 @@
#include <libsolidity/inlineasm/AsmData.h>
#include <libsolidity/inlineasm/AsmScope.h>
#include <libsolidity/inlineasm/AsmAnalysis.h>
+#include <libsolidity/inlineasm/AsmAnalysisInfo.h>
#include <libevmasm/Assembly.h>
#include <libevmasm/SourceLocation.h>
@@ -47,8 +48,8 @@ using namespace dev::solidity::assembly;
struct GeneratorState
{
- GeneratorState(ErrorList& _errors, AsmAnalyzer::Scopes& _scopes, eth::Assembly& _assembly):
- errors(_errors), scopes(_scopes), assembly(_assembly) {}
+ GeneratorState(ErrorList& _errors, AsmAnalysisInfo& _analysisInfo, eth::Assembly& _assembly):
+ errors(_errors), info(_analysisInfo), assembly(_assembly) {}
size_t newLabelId()
{
@@ -63,7 +64,7 @@ struct GeneratorState
}
ErrorList& errors;
- AsmAnalyzer::Scopes scopes;
+ AsmAnalysisInfo info;
eth::Assembly& assembly;
};
@@ -79,7 +80,7 @@ public:
assembly::ExternalIdentifierAccess const& _identifierAccess = assembly::ExternalIdentifierAccess()
):
m_state(_state),
- m_scope(*m_state.scopes.at(&_block)),
+ m_scope(*m_state.info.scopes.at(&_block)),
m_initialDeposit(m_state.assembly.deposit()),
m_identifierAccess(_identifierAccess)
{
@@ -262,23 +263,23 @@ private:
eth::Assembly assembly::CodeGenerator::assemble(
Block const& _parsedData,
- AsmAnalyzer::Scopes& _scopes,
+ AsmAnalysisInfo& _analysisInfo,
ExternalIdentifierAccess const& _identifierAccess
)
{
eth::Assembly assembly;
- GeneratorState state(m_errors, _scopes, assembly);
+ GeneratorState state(m_errors, _analysisInfo, assembly);
CodeTransform(state, _parsedData, _identifierAccess);
return assembly;
}
void assembly::CodeGenerator::assemble(
Block const& _parsedData,
- AsmAnalyzer::Scopes& _scopes,
+ AsmAnalysisInfo& _analysisInfo,
eth::Assembly& _assembly,
ExternalIdentifierAccess const& _identifierAccess
)
{
- GeneratorState state(m_errors, _scopes, _assembly);
+ GeneratorState state(m_errors, _analysisInfo, _assembly);
CodeTransform(state, _parsedData, _identifierAccess);
}