mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Support metadata via IR.
This commit is contained in:
@@ -110,6 +110,9 @@ public:
|
||||
/// Appends an assignment to an immutable variable.
|
||||
virtual void appendImmutableAssignment(std::string const& _identifier) = 0;
|
||||
|
||||
/// Appends data to the very end of the bytecode. Repeated calls concatenate.
|
||||
virtual void appendToAuxiliaryData(bytes const& _data) = 0;
|
||||
|
||||
/// Mark this assembly as invalid. Any attempt to request bytecode from it should throw.
|
||||
virtual void markAsInvalid() = 0;
|
||||
};
|
||||
|
||||
@@ -53,7 +53,11 @@ void EVMObjectCompiler::run(Object& _object, bool _optimize)
|
||||
else
|
||||
{
|
||||
Data const& data = dynamic_cast<Data const&>(*subNode);
|
||||
context.subIDs[data.name] = m_assembly.appendData(data.data);
|
||||
// Special handling of metadata.
|
||||
if (data.name.str() == Object::metadataName())
|
||||
m_assembly.appendToAuxiliaryData(data.data);
|
||||
else
|
||||
context.subIDs[data.name] = m_assembly.appendData(data.data);
|
||||
}
|
||||
|
||||
yulAssert(_object.analysisInfo, "No analysis info.");
|
||||
|
||||
@@ -161,6 +161,11 @@ AbstractAssembly::SubID EthAssemblyAdapter::appendData(bytes const& _data)
|
||||
return subID;
|
||||
}
|
||||
|
||||
void EthAssemblyAdapter::appendToAuxiliaryData(bytes const& _data)
|
||||
{
|
||||
m_assembly.appendToAuxiliaryData(_data);
|
||||
}
|
||||
|
||||
void EthAssemblyAdapter::appendImmutable(std::string const& _identifier)
|
||||
{
|
||||
m_assembly.appendImmutable(_identifier);
|
||||
|
||||
@@ -58,6 +58,8 @@ public:
|
||||
void appendDataSize(std::vector<SubID> const& _subPath) override;
|
||||
SubID appendData(bytes const& _data) override;
|
||||
|
||||
void appendToAuxiliaryData(bytes const& _data) override;
|
||||
|
||||
void appendImmutable(std::string const& _identifier) override;
|
||||
void appendImmutableAssignment(std::string const& _identifier) override;
|
||||
|
||||
|
||||
@@ -70,6 +70,8 @@ public:
|
||||
void appendDataSize(std::vector<SubID> const& _subPath) override;
|
||||
SubID appendData(bytes const& _data) override;
|
||||
|
||||
void appendToAuxiliaryData(bytes const&) override {}
|
||||
|
||||
void appendImmutable(std::string const& _identifier) override;
|
||||
void appendImmutableAssignment(std::string const& _identifier) override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user