mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
f
This commit is contained in:
parent
26f5db3b84
commit
2632adf3ca
@ -580,10 +580,9 @@ LinkerObject const& Assembly::assemble() const
|
||||
case StaticJumpI:
|
||||
{
|
||||
ret.bytecode.push_back(static_cast<uint8_t>((i.type() == StaticJump) ? Instruction::RJUMP : Instruction::RJUMPI));
|
||||
ret.bytecode.push_back(tagPush);
|
||||
tagRef[ret.bytecode.size()] = i.splitForeignPushTag();
|
||||
isStaticTagRef.insert(ret.bytecode.size());
|
||||
ret.bytecode.resize(ret.bytecode.size() + bytesPerStaticTag);
|
||||
ret.bytecode.resize(ret.bytecode.size() + bytesPerStaticTag); // Place 0 as immediate for now
|
||||
break;
|
||||
}
|
||||
case PushData:
|
||||
@ -709,6 +708,7 @@ LinkerObject const& Assembly::assemble() const
|
||||
m_tagPositionsInBytecode :
|
||||
m_subs[subId]->m_tagPositionsInBytecode;
|
||||
assertThrow(tagId < tagPositions.size(), AssemblyException, "Reference to non-existing tag.");
|
||||
cout << tagId << "\n";
|
||||
size_t pos = tagPositions[tagId];
|
||||
assertThrow(pos != numeric_limits<size_t>::max(), AssemblyException, "Reference to tag without position.");
|
||||
if (isStaticTagRef.count(i.first)) {
|
||||
|
@ -212,7 +212,11 @@ public:
|
||||
CompilerContext& appendJumpTo(
|
||||
evmasm::AssemblyItem const& _tag,
|
||||
evmasm::AssemblyItem::JumpType _jumpType = evmasm::AssemblyItem::JumpType::Ordinary
|
||||
) { evmasm::AssemblyItem item = m_asm->appendStaticJump(_tag); item.setJumpType(_jumpType); return *this << item; }
|
||||
) {
|
||||
evmasm::AssemblyItem item = m_asm->appendStaticJump(_tag);
|
||||
item.setJumpType(_jumpType);
|
||||
return *this << item;
|
||||
}
|
||||
/// Appends pushing of a new tag and @returns the new tag.
|
||||
evmasm::AssemblyItem pushNewTag() { return m_asm->append(m_asm->newPushTag()).tag(); }
|
||||
/// @returns a new tag without pushing any opcodes or data
|
||||
|
Loading…
Reference in New Issue
Block a user