Merge pull request #4784 from ethereum/fixes-msvc-compilation

Fixes compilation under MSVC introduced in PR #4772.
This commit is contained in:
chriseth 2018-08-09 11:58:43 +02:00 committed by GitHub
commit fc99014fa2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -41,9 +41,9 @@ namespace test
namespace namespace
{ {
void checkCompilation(Assembly const& _asm) void checkCompilation(::dev::eth::Assembly const& _assembly)
{ {
LinkerObject output = _asm.assemble(); LinkerObject output = _assembly.assemble();
BOOST_CHECK(output.bytecode.size() > 0); BOOST_CHECK(output.bytecode.size() > 0);
BOOST_CHECK(output.toHex().length() > 0); BOOST_CHECK(output.toHex().length() > 0);
} }
@ -53,8 +53,8 @@ BOOST_AUTO_TEST_SUITE(Assembler)
BOOST_AUTO_TEST_CASE(all_assembly_items) BOOST_AUTO_TEST_CASE(all_assembly_items)
{ {
Assembly _asm; Assembly _assembly;
_asm.setSourceLocation(SourceLocation(1, 3, make_shared<string>("root.asm"))); _assembly.setSourceLocation(SourceLocation(1, 3, make_shared<string>("root.asm")));
Assembly _subAsm; Assembly _subAsm;
_subAsm.setSourceLocation(SourceLocation(6, 8, make_shared<string>("sub.asm"))); _subAsm.setSourceLocation(SourceLocation(6, 8, make_shared<string>("sub.asm")));
@ -62,44 +62,45 @@ BOOST_AUTO_TEST_CASE(all_assembly_items)
shared_ptr<Assembly> _subAsmPtr = make_shared<Assembly>(_subAsm); shared_ptr<Assembly> _subAsmPtr = make_shared<Assembly>(_subAsm);
// Tag // Tag
auto tag = _asm.newTag(); auto tag = _assembly.newTag();
_asm.append(tag); _assembly.append(tag);
// Operation // Operation
_asm.append(u256(1)); _assembly.append(u256(1));
_asm.append(u256(2)); _assembly.append(u256(2));
// Push // Push
_asm.append(Instruction::KECCAK256); _assembly.append(Instruction::KECCAK256);
// PushProgramSize // PushProgramSize
_asm.appendProgramSize(); _assembly.appendProgramSize();
// PushLibraryAddress // PushLibraryAddress
_asm.appendLibraryAddress("someLibrary"); _assembly.appendLibraryAddress("someLibrary");
// PushTag + Operation // PushTag + Operation
_asm.appendJump(tag); _assembly.appendJump(tag);
// PushString // PushString
_asm.append("Unused feature for pushing string"); _assembly.append("Unused feature for pushing string");
// PushData // PushData
_asm.append(bytes{0x1, 0x2, 0x3, 0x4}); _assembly.append(bytes{0x1, 0x2, 0x3, 0x4});
// PushSubSize // PushSubSize
auto sub = _asm.appendSubroutine(_subAsmPtr); auto sub = _assembly.appendSubroutine(_subAsmPtr);
// PushSub // PushSub
_asm.pushSubroutineOffset(size_t(sub.data())); _assembly.pushSubroutineOffset(size_t(sub.data()));
// PushDeployTimeAddress // PushDeployTimeAddress
_asm.append(PushDeployTimeAddress); _assembly.append(PushDeployTimeAddress);
// Operation // Operation
_asm.append(Instruction::STOP); _assembly.append(Instruction::STOP);
_asm.appendAuxiliaryDataToEnd(bytes{0x42, 0x66}); _assembly.appendAuxiliaryDataToEnd(bytes{0x42, 0x66});
_asm.appendAuxiliaryDataToEnd(bytes{0xee, 0xaa}); _assembly.appendAuxiliaryDataToEnd(bytes{0xee, 0xaa});
checkCompilation(_assembly);
checkCompilation(_asm);
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
_asm.assemble().toHex(), _assembly.assemble().toHex(),
"5b6001600220606773__someLibrary___________________________" "5b6001600220606773__someLibrary___________________________"
"6000567f556e75736564206665617475726520666f722070757368696e" "6000567f556e75736564206665617475726520666f722070757368696e"
"6720737472696e605f6001605e7300000000000000000000000000000000000000000000" "6720737472696e605f6001605e7300000000000000000000000000000000000000000000"
"fe010203044266eeaa" "fe010203044266eeaa"
); );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
_asm.assemblyString(), _assembly.assemblyString(),
" /* \"root.asm\":1:3 */\n" " /* \"root.asm\":1:3 */\n"
"tag_1:\n" "tag_1:\n"
" keccak256(0x2, 0x1)\n" " keccak256(0x2, 0x1)\n"
@ -123,7 +124,7 @@ BOOST_AUTO_TEST_CASE(all_assembly_items)
"auxdata: 0x4266eeaa\n" "auxdata: 0x4266eeaa\n"
); );
BOOST_CHECK_EQUAL( BOOST_CHECK_EQUAL(
dev::jsonCompactPrint(_asm.assemblyJSON()), dev::jsonCompactPrint(_assembly.assemblyJSON()),
"{\".auxdata\":\"4266eeaa\",\".code\":[{\"begin\":1,\"end\":3,\"name\":\"tag\",\"value\":\"1\"}," "{\".auxdata\":\"4266eeaa\",\".code\":[{\"begin\":1,\"end\":3,\"name\":\"tag\",\"value\":\"1\"},"
"{\"begin\":1,\"end\":3,\"name\":\"JUMPDEST\"}," "{\"begin\":1,\"end\":3,\"name\":\"JUMPDEST\"},"
"{\"begin\":1,\"end\":3,\"name\":\"PUSH\",\"value\":\"1\"}," "{\"begin\":1,\"end\":3,\"name\":\"PUSH\",\"value\":\"1\"},"