diff options
author | chriseth <chris@ethereum.org> | 2017-12-13 21:40:54 +0800 |
---|---|---|
committer | Alex Beregszaszi <alex@rtfs.hu> | 2018-01-06 09:23:38 +0800 |
commit | 124190336b0a70ea32d5f8ca0c4b364f1fc774d0 (patch) | |
tree | 6be4f7815f417c9343ed57a85ec51f77f0c53aff /libsolidity/codegen | |
parent | 2548228b365d56612e2f039f735be0fdf6ce0807 (diff) | |
download | dexon-solidity-124190336b0a70ea32d5f8ca0c4b364f1fc774d0.tar dexon-solidity-124190336b0a70ea32d5f8ca0c4b364f1fc774d0.tar.gz dexon-solidity-124190336b0a70ea32d5f8ca0c4b364f1fc774d0.tar.bz2 dexon-solidity-124190336b0a70ea32d5f8ca0c4b364f1fc774d0.tar.lz dexon-solidity-124190336b0a70ea32d5f8ca0c4b364f1fc774d0.tar.xz dexon-solidity-124190336b0a70ea32d5f8ca0c4b364f1fc774d0.tar.zst dexon-solidity-124190336b0a70ea32d5f8ca0c4b364f1fc774d0.zip |
Split inline assembly into loose and strict flavours.
Diffstat (limited to 'libsolidity/codegen')
-rw-r--r-- | libsolidity/codegen/CompilerContext.cpp | 9 | ||||
-rw-r--r-- | libsolidity/codegen/CompilerContext.h | 4 |
2 files changed, 9 insertions, 4 deletions
diff --git a/libsolidity/codegen/CompilerContext.cpp b/libsolidity/codegen/CompilerContext.cpp index ab10d7dd..7a88475a 100644 --- a/libsolidity/codegen/CompilerContext.cpp +++ b/libsolidity/codegen/CompilerContext.cpp @@ -319,14 +319,19 @@ void CompilerContext::appendInlineAssembly( ErrorList errors; ErrorReporter errorReporter(errors); auto scanner = make_shared<Scanner>(CharStream(_assembly), "--CODEGEN--"); - auto parserResult = assembly::Parser(errorReporter).parse(scanner); + auto parserResult = assembly::Parser(errorReporter, assembly::AsmFlavour::Strict).parse(scanner); #ifdef SOL_OUTPUT_ASM cout << assembly::AsmPrinter()(*parserResult) << endl; #endif assembly::AsmAnalysisInfo analysisInfo; bool analyzerResult = false; if (parserResult) - analyzerResult = assembly::AsmAnalyzer(analysisInfo, errorReporter, false, identifierAccess.resolve).analyze(*parserResult); + analyzerResult = assembly::AsmAnalyzer( + analysisInfo, + errorReporter, + assembly::AsmFlavour::Strict, + identifierAccess.resolve + ).analyze(*parserResult); if (!parserResult || !errorReporter.errors().empty() || !analyzerResult) { string message = diff --git a/libsolidity/codegen/CompilerContext.h b/libsolidity/codegen/CompilerContext.h index 7743fd3f..0e8b639c 100644 --- a/libsolidity/codegen/CompilerContext.h +++ b/libsolidity/codegen/CompilerContext.h @@ -187,8 +187,8 @@ public: CompilerContext& operator<<(u256 const& _value) { m_asm->append(_value); return *this; } CompilerContext& operator<<(bytes const& _data) { m_asm->append(_data); return *this; } - /// Appends inline assembly. @a _replacements are string-matching replacements that are performed - /// prior to parsing the inline assembly. + /// Appends inline assembly (strict mode). + /// @a _replacements are string-matching replacements that are performed prior to parsing the inline assembly. /// @param _localVariables assigns stack positions to variables with the last one being the stack top /// @param _system if true, this is a "system-level" assembly where all functions use named labels. void appendInlineAssembly( |