Browse Source

Remove NoOptimizeBegin/End again.

cl-refactor
chriseth 10 years ago
parent
commit
0ed6724f0b
  1. 26
      libevmcore/Assembly.cpp
  2. 2
      libevmcore/Assembly.h

26
libevmcore/Assembly.cpp

@ -47,9 +47,6 @@ unsigned AssemblyItem::bytesRequired(unsigned _addressLength) const
case PushData: case PushData:
case PushSub: case PushSub:
return 1 + _addressLength; return 1 + _addressLength;
case NoOptimizeBegin:
case NoOptimizeEnd:
return 0;
default: default:
break; break;
} }
@ -174,12 +171,6 @@ ostream& dev::eth::operator<<(ostream& _out, AssemblyItemsConstRef _i)
case PushProgramSize: case PushProgramSize:
_out << " PUSHSIZE"; _out << " PUSHSIZE";
break; break;
case NoOptimizeBegin:
_out << " DoNotOptimze{{";
break;
case NoOptimizeEnd:
_out << " DoNotOptimze}}";
break;
case UndefinedItem: case UndefinedItem:
_out << " ???"; _out << " ???";
break; break;
@ -245,12 +236,6 @@ ostream& Assembly::stream(ostream& _out, string const& _prefix, StringMap const&
case PushData: case PushData:
_out << " PUSH [" << hex << (unsigned)i.m_data << "]"; _out << " PUSH [" << hex << (unsigned)i.m_data << "]";
break; break;
case NoOptimizeBegin:
_out << "DoNotOptimze{{";
break;
case NoOptimizeEnd:
_out << "DoNotOptimze}}";
break;
default: default:
BOOST_THROW_EXCEPTION(InvalidOpcode()); BOOST_THROW_EXCEPTION(InvalidOpcode());
} }
@ -424,12 +409,6 @@ Assembly& Assembly::optimise(bool _enable)
count = 0; count = 0;
for (unsigned i = 0; i < m_items.size(); ++i) for (unsigned i = 0; i < m_items.size(); ++i)
{ {
if (m_items[i].type() == NoOptimizeBegin)
{
while (i < m_items.size() && m_items[i].type() != NoOptimizeEnd)
++i;
continue;
}
for (auto const& r: rules) for (auto const& r: rules)
{ {
auto vr = AssemblyItemsConstRef(&m_items).cropped(i, r.first.size()); auto vr = AssemblyItemsConstRef(&m_items).cropped(i, r.first.size());
@ -464,8 +443,6 @@ Assembly& Assembly::optimise(bool _enable)
bool o = false; bool o = false;
while (m_items.size() > i + 1 && m_items[i + 1].type() != Tag) while (m_items.size() > i + 1 && m_items[i + 1].type() != Tag)
{ {
if (m_items[i + 1].type() == NoOptimizeBegin)
break;
m_items.erase(m_items.begin() + i + 1); m_items.erase(m_items.begin() + i + 1);
o = true; o = true;
} }
@ -599,9 +576,6 @@ bytes Assembly::assemble() const
tagPos[(unsigned)i.m_data] = ret.size(); tagPos[(unsigned)i.m_data] = ret.size();
ret.push_back((byte)Instruction::JUMPDEST); ret.push_back((byte)Instruction::JUMPDEST);
break; break;
case NoOptimizeBegin:
case NoOptimizeEnd:
break;
default: default:
BOOST_THROW_EXCEPTION(InvalidOpcode()); BOOST_THROW_EXCEPTION(InvalidOpcode());
} }

2
libevmcore/Assembly.h

@ -33,7 +33,7 @@ namespace dev
namespace eth namespace eth
{ {
enum AssemblyItemType { UndefinedItem, Operation, Push, PushString, PushTag, PushSub, PushSubSize, PushProgramSize, Tag, PushData, NoOptimizeBegin, NoOptimizeEnd }; enum AssemblyItemType { UndefinedItem, Operation, Push, PushString, PushTag, PushSub, PushSubSize, PushProgramSize, Tag, PushData };
class Assembly; class Assembly;

Loading…
Cancel
Save