Skip to content

Commit e4ed7e5

Browse files
committed
Switch to 1-based indexing.
1 parent 606ebe5 commit e4ed7e5

File tree

9 files changed

+24
-24
lines changed

9 files changed

+24
-24
lines changed

libevmasm/Assembly.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -772,12 +772,12 @@ AssemblyItem Assembly::newAuxDataLoadN(size_t _offset)
772772
return AssemblyItem{AuxDataLoadN, _offset};
773773
}
774774

775-
AssemblyItem Assembly::newSwapN(uint8_t _depth)
775+
AssemblyItem Assembly::newSwapN(size_t _depth)
776776
{
777777
return AssemblyItem::swapn(_depth);
778778
}
779779

780-
AssemblyItem Assembly::newDupN(uint8_t _depth)
780+
AssemblyItem Assembly::newDupN(size_t _depth)
781781
{
782782
return AssemblyItem::dupn(_depth);
783783
}
@@ -1648,13 +1648,13 @@ LinkerObject const& Assembly::assembleEOF() const
16481648
break;
16491649
case SwapN:
16501650
ret.bytecode.push_back(static_cast<uint8_t>(Instruction::SWAPN));
1651-
solAssert(item.data() < 256);
1652-
ret.bytecode.push_back(static_cast<uint8_t>(item.data()));
1651+
solAssert(item.data() >= 1 && item.data() <= 256);
1652+
ret.bytecode.push_back(static_cast<uint8_t>(item.data() - 1));
16531653
break;
16541654
case DupN:
16551655
ret.bytecode.push_back(static_cast<uint8_t>(Instruction::DUPN));
1656-
solAssert(item.data() < 256);
1657-
ret.bytecode.push_back(static_cast<uint8_t>(item.data()));
1656+
solAssert(item.data() >= 1 && item.data() <= 256);
1657+
ret.bytecode.push_back(static_cast<uint8_t>(item.data() - 1));
16581658
break;
16591659
default:
16601660
solAssert(false, "Unexpected opcode while assembling.");

libevmasm/Assembly.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ class Assembly
8989
AssemblyItem newPushImmutable(std::string const& _identifier);
9090
AssemblyItem newImmutableAssignment(std::string const& _identifier);
9191
AssemblyItem newAuxDataLoadN(size_t offset);
92-
AssemblyItem newSwapN(uint8_t _depth);
93-
AssemblyItem newDupN(uint8_t _depth);
92+
AssemblyItem newSwapN(size_t _depth);
93+
AssemblyItem newDupN(size_t _depth);
9494

9595
AssemblyItem const& append(AssemblyItem _i);
9696
AssemblyItem const& append(bytes const& _data) { return append(newData(_data)); }
@@ -104,8 +104,8 @@ class Assembly
104104
void appendImmutable(std::string const& _identifier) { append(newPushImmutable(_identifier)); }
105105
void appendImmutableAssignment(std::string const& _identifier) { append(newImmutableAssignment(_identifier)); }
106106
void appendAuxDataLoadN(uint16_t _offset) { append(newAuxDataLoadN(_offset));}
107-
void appendSwapN(uint8_t _depth) { append(newSwapN(_depth)); }
108-
void appendDupN(uint8_t _depth) { append(newDupN(_depth)); }
107+
void appendSwapN(size_t _depth) { append(newSwapN(_depth)); }
108+
void appendDupN(size_t _depth) { append(newDupN(_depth)); }
109109

110110
void appendVerbatim(bytes _data, size_t _arguments, size_t _returnVariables)
111111
{

libevmasm/AssemblyItem.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,9 @@ size_t AssemblyItem::arguments() const
212212
if (type() == CallF || type() == JumpF)
213213
return functionSignature().argsNum;
214214
else if (type() == SwapN)
215-
return static_cast<size_t>(data()) + 2;
216-
else if (type() == DupN)
217215
return static_cast<size_t>(data()) + 1;
216+
else if (type() == DupN)
217+
return static_cast<size_t>(data());
218218
else if (hasInstruction())
219219
{
220220
solAssert(instruction() != Instruction::CALLF && instruction() != Instruction::JUMPF);
@@ -245,7 +245,7 @@ size_t AssemblyItem::returnValues() const
245245
return static_cast<size_t>(instructionInfo(instruction(), EVMVersion()).ret);
246246
case SwapN:
247247
case DupN:
248-
return static_cast<size_t>(data()) + 2;
248+
return static_cast<size_t>(data()) + 1;
249249
case Push:
250250
case PushTag:
251251
case PushData:

libevmasm/AssemblyItem.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,11 +149,11 @@ class AssemblyItem
149149
solAssert(_tag.type() == Tag);
150150
return AssemblyItem(ConditionalRelativeJump, Instruction::RJUMPI, _tag.data(), _debugData);
151151
}
152-
static AssemblyItem swapn(uint8_t _depth, langutil::DebugData::ConstPtr _debugData = langutil::DebugData::create())
152+
static AssemblyItem swapn(size_t _depth, langutil::DebugData::ConstPtr _debugData = langutil::DebugData::create())
153153
{
154154
return AssemblyItem(SwapN, Instruction::SWAPN, _depth, _debugData);
155155
}
156-
static AssemblyItem dupn(uint8_t _depth, langutil::DebugData::ConstPtr _debugData = langutil::DebugData::create())
156+
static AssemblyItem dupn(size_t _depth, langutil::DebugData::ConstPtr _debugData = langutil::DebugData::create())
157157
{
158158
return AssemblyItem(DupN, Instruction::DUPN, _depth, _debugData);
159159
}

libyul/backends/evm/AbstractAssembly.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -149,8 +149,8 @@ class AbstractAssembly
149149
/// EOF auxiliary data in data section and the auxiliary data are different things.
150150
virtual void appendToAuxiliaryData(bytes const& _data) = 0;
151151

152-
virtual void appendSwapN(uint8_t _depth) = 0;
153-
virtual void appendDupN(uint8_t _depth) = 0;
152+
virtual void appendSwapN(size_t _depth) = 0;
153+
virtual void appendDupN(size_t _depth) = 0;
154154

155155
/// Mark this assembly as invalid. Any attempt to request bytecode from it should throw.
156156
virtual void markAsInvalid() = 0;

libyul/backends/evm/EthAssemblyAdapter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,12 +232,12 @@ void EthAssemblyAdapter::appendAuxDataLoadN(uint16_t _offset)
232232
m_assembly.appendAuxDataLoadN(_offset);
233233
}
234234

235-
void EthAssemblyAdapter::appendSwapN(uint8_t _depth)
235+
void EthAssemblyAdapter::appendSwapN(size_t _depth)
236236
{
237237
m_assembly.appendSwapN(_depth);
238238
}
239239

240-
void EthAssemblyAdapter::appendDupN(uint8_t _depth)
240+
void EthAssemblyAdapter::appendDupN(size_t _depth)
241241
{
242242
m_assembly.appendDupN(_depth);
243243
}

libyul/backends/evm/EthAssemblyAdapter.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ class EthAssemblyAdapter: public AbstractAssembly
7474

7575
void appendAuxDataLoadN(uint16_t _offset) override;
7676

77-
void appendSwapN(uint8_t _depth) override;
78-
void appendDupN(uint8_t _depth) override;
77+
void appendSwapN(size_t _depth) override;
78+
void appendDupN(size_t _depth) override;
7979

8080
void markAsInvalid() override;
8181

libyul/backends/evm/NoOutputAssembly.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ void NoOutputAssembly::appendAssemblySize()
114114
appendInstruction(evmasm::Instruction::PUSH1);
115115
}
116116

117-
void NoOutputAssembly::appendDupN(uint8_t)
117+
void NoOutputAssembly::appendDupN(size_t)
118118
{
119119
m_stackHeight++;
120120
}

libyul/backends/evm/NoOutputAssembly.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ class NoOutputAssembly: public AbstractAssembly
9090
void appendAuxDataLoadN(uint16_t) override;
9191
void appendEOFCreate(ContainerID) override;
9292
void appendReturnContract(ContainerID) override;
93-
void appendSwapN(uint8_t) override {}
94-
void appendDupN(uint8_t) override;
93+
void appendSwapN(size_t) override {}
94+
void appendDupN(size_t) override;
9595

9696
void markAsInvalid() override {}
9797

0 commit comments

Comments
 (0)