Revert "patch: m1/llvm4"

This reverts commit 41461bdddc.
This commit is contained in:
Richard Holland
2023-06-26 12:58:53 +00:00
parent 1bf5088b16
commit 2211d6f851
4 changed files with 246 additions and 251 deletions

View File

@@ -2,8 +2,6 @@
NIH dep: wasmedge: web assembly runtime for hooks.
#]===================================================================]
find_package(Curses REQUIRED)
include_directories(${CURSES_INCLUDE_DIR})
find_package(LLVM REQUIRED CONFIG)
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
@@ -26,7 +24,6 @@ ExternalProject_Add (wasmedge_src
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DLLVM_DIR=${LLVM_DIR}
-DLLVM_LIBRARY_DIR=${LLVM_LIBRARY_DIR}
-DLLVM_ENABLE_TERMINFO=OFF
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
$<$<BOOL:${MSVC}>:
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP -march=native"
@@ -66,6 +63,4 @@ set_target_properties (wasmedge PROPERTIES
"${wasmedge_src_BINARY_DIR}/include/api/"
)
target_link_libraries (ripple_libs INTERFACE wasmedge)
target_link_libraries(ripple_libs INTERFACE ${CURSES_LIBRARY})
target_link_libraries(ripple_libs INTERFACE xar)
add_library (NIH::WasmEdge ALIAS wasmedge)

View File

@@ -79,7 +79,7 @@ Invoke::calculateBaseFee(ReadView const& view, STTx const& tx)
XRPAmount extraFee{0};
if (tx.isFieldPresent(sfBlob))
extraFee += XRPAmount{ static_cast<XRPAmount>(tx.getFieldVL(sfBlob).size()) };
extraFee += XRPAmount{ tx.getFieldVL(sfBlob).size() };
if (tx.isFieldPresent(sfHookParameters))
{
@@ -93,7 +93,7 @@ Invoke::calculateBaseFee(ReadView const& view, STTx const& tx)
(param.isFieldPresent(sfHookParameterValue) ?
param.getFieldVL(sfHookParameterValue).size() : 0);
}
extraFee += XRPAmount { static_cast<XRPAmount>(paramBytes) };
extraFee += XRPAmount { paramBytes };
}
return Transactor::calculateBaseFee(view, tx) + extraFee;

View File

@@ -547,7 +547,7 @@ SetHook::calculateBaseFee(ReadView const& view, STTx const& tx)
(param.isFieldPresent(sfHookParameterValue) ?
param.getFieldVL(sfHookParameterValue).size() : 0);
}
extraFee += XRPAmount { static_cast<XRPAmount>(paramBytes) };
extraFee += XRPAmount { paramBytes };
}
}

View File

@@ -69,281 +69,281 @@ private:
Json::Value ret{Json::objectValue};
ret[jss::TYPES] = Json::objectValue;
// auto const translate = [](std::string inp) -> std::string {
// auto replace = [&](const char* f, const char* r) -> std::string {
// std::string out = inp;
// boost::replace_all(out, f, r);
// return out;
// };
auto const translate = [](std::string inp) -> std::string {
auto replace = [&](const char* f, const char* r) -> std::string {
std::string out = inp;
boost::replace_all(out, f, r);
return out;
};
// auto find = [&](const char* s) -> bool {
// return inp.find(s) != std::string::npos;
// };
auto find = [&](const char* s) -> bool {
return inp.find(s) != std::string::npos;
};
// if (find("UINT"))
// {
// if (find("256") || find("160") || find("128"))
// return replace("UINT", "Hash");
// else
// return replace("UINT", "UInt");
// }
if (find("UINT"))
{
if (find("256") || find("160") || find("128"))
return replace("UINT", "Hash");
else
return replace("UINT", "UInt");
}
// if (inp == "OBJECT")
// return "STObject";
// if (inp == "ARRAY")
// return "STArray";
// if (inp == "AMM")
// return "AMM";
// if (inp == "ACCOUNT")
// return "AccountID";
// if (inp == "LEDGERENTRY")
// return "LedgerEntry";
// if (inp == "NOTPRESENT")
// return "NotPresent";
// if (inp == "PATHSET")
// return "PathSet";
// if (inp == "VL")
// return "Blob";
// if (inp == "DIR_NODE")
// return "DirectoryNode";
// if (inp == "PAYCHAN")
// return "PayChannel";
if (inp == "OBJECT")
return "STObject";
if (inp == "ARRAY")
return "STArray";
if (inp == "AMM")
return "AMM";
if (inp == "ACCOUNT")
return "AccountID";
if (inp == "LEDGERENTRY")
return "LedgerEntry";
if (inp == "NOTPRESENT")
return "NotPresent";
if (inp == "PATHSET")
return "PathSet";
if (inp == "VL")
return "Blob";
if (inp == "DIR_NODE")
return "DirectoryNode";
if (inp == "PAYCHAN")
return "PayChannel";
// static const std::map<std::string, std::string>
// capitalization_exceptions = {
// {"NFTOKEN", "NFToken"},
// {"UNL", "UNL"},
// {"XCHAIN", "XChain"},
// {"ID", "ID"},
// {"AMM", "AMM"},
// {"URITOKEN", "URIToken"},
// {"URI", "URI"}};
static const std::map<std::string, std::string>
capitalization_exceptions = {
{"NFTOKEN", "NFToken"},
{"UNL", "UNL"},
{"XCHAIN", "XChain"},
{"ID", "ID"},
{"AMM", "AMM"},
{"URITOKEN", "URIToken"},
{"URI", "URI"}};
// std::string out;
// size_t pos = 0;
// for (;;)
// {
// pos = inp.find("_");
// if (pos == std::string::npos)
// pos = inp.size();
// std::string token = inp.substr(0, pos);
// if (auto const e = capitalization_exceptions.find(token);
// e != capitalization_exceptions.end())
// out += e->second;
// else if (token.size() > 1)
// {
// boost::algorithm::to_lower(token);
// token.data()[0] -= ('a' - 'A');
// out += token;
// }
// else
// out += token;
// if (pos == inp.size())
// break;
// inp = inp.substr(pos + 1);
// }
// return out;
// };
std::string out;
size_t pos = 0;
for (;;)
{
pos = inp.find("_");
if (pos == std::string::npos)
pos = inp.size();
std::string token = inp.substr(0, pos);
if (auto const e = capitalization_exceptions.find(token);
e != capitalization_exceptions.end())
out += e->second;
else if (token.size() > 1)
{
boost::algorithm::to_lower(token);
token.data()[0] -= ('a' - 'A');
out += token;
}
else
out += token;
if (pos == inp.size())
break;
inp = inp.substr(pos + 1);
}
return out;
};
// ret[jss::TYPES]["Done"] = -1;
// std::map<int32_t, std::string> type_map{{-1, "Done"}};
// for (auto [value, name] : magic_enum::enum_entries<SerializedTypeID>())
// {
// std::string type_name =
// translate(STR(name).substr(4) /* remove STI_ */);
// int32_t type_value = std::stoi(STR(value));
// ret[jss::TYPES][type_name] = type_value;
// type_map[type_value] = type_name;
// }
ret[jss::TYPES]["Done"] = -1;
std::map<int32_t, std::string> type_map{{-1, "Done"}};
for (auto [value, name] : magic_enum::enum_entries<SerializedTypeID>())
{
std::string type_name =
translate(STR(name).substr(4) /* remove STI_ */);
int32_t type_value = std::stoi(STR(value));
ret[jss::TYPES][type_name] = type_value;
type_map[type_value] = type_name;
}
// ret[jss::LEDGER_ENTRY_TYPES] = Json::objectValue;
// ret[jss::LEDGER_ENTRY_TYPES][jss::Invalid] = -1;
ret[jss::LEDGER_ENTRY_TYPES] = Json::objectValue;
ret[jss::LEDGER_ENTRY_TYPES][jss::Invalid] = -1;
// for (auto [value, name] : magic_enum::enum_entries<LedgerEntryType>())
// ret[jss::LEDGER_ENTRY_TYPES]
// [translate(STR(name).substr(2) /* remove lt_ */)] =
// std::stoi(STR(value));
for (auto [value, name] : magic_enum::enum_entries<LedgerEntryType>())
ret[jss::LEDGER_ENTRY_TYPES]
[translate(STR(name).substr(2) /* remove lt_ */)] =
std::stoi(STR(value));
// ret[jss::FIELDS] = Json::arrayValue;
ret[jss::FIELDS] = Json::arrayValue;
// uint32_t i = 0;
// {
// Json::Value a = Json::arrayValue;
// a[0U] = "Generic";
// Json::Value v = Json::objectValue;
// v[jss::nth] = 0;
// v[jss::isVLEncoded] = false;
// v[jss::isSerialized] = false;
// v[jss::isSigningField] = false;
// v[jss::type] = "Unknown";
// a[1U] = v;
// ret[jss::FIELDS][i++] = a;
// }
uint32_t i = 0;
{
Json::Value a = Json::arrayValue;
a[0U] = "Generic";
Json::Value v = Json::objectValue;
v[jss::nth] = 0;
v[jss::isVLEncoded] = false;
v[jss::isSerialized] = false;
v[jss::isSigningField] = false;
v[jss::type] = "Unknown";
a[1U] = v;
ret[jss::FIELDS][i++] = a;
}
// {
// Json::Value a = Json::arrayValue;
// a[0U] = "Invalid";
// Json::Value v = Json::objectValue;
// v[jss::nth] = -1;
// v[jss::isVLEncoded] = false;
// v[jss::isSerialized] = false;
// v[jss::isSigningField] = false;
// v[jss::type] = "Unknown";
// a[1U] = v;
// ret[jss::FIELDS][i++] = a;
// }
{
Json::Value a = Json::arrayValue;
a[0U] = "Invalid";
Json::Value v = Json::objectValue;
v[jss::nth] = -1;
v[jss::isVLEncoded] = false;
v[jss::isSerialized] = false;
v[jss::isSigningField] = false;
v[jss::type] = "Unknown";
a[1U] = v;
ret[jss::FIELDS][i++] = a;
}
// {
// Json::Value a = Json::arrayValue;
// a[0U] = "ObjectEndMarker";
// Json::Value v = Json::objectValue;
// v[jss::nth] = 1;
// v[jss::isVLEncoded] = false;
// v[jss::isSerialized] = false;
// v[jss::isSigningField] = true;
// v[jss::type] = "STObject";
// a[1U] = v;
// ret[jss::FIELDS][i++] = a;
// }
{
Json::Value a = Json::arrayValue;
a[0U] = "ObjectEndMarker";
Json::Value v = Json::objectValue;
v[jss::nth] = 1;
v[jss::isVLEncoded] = false;
v[jss::isSerialized] = false;
v[jss::isSigningField] = true;
v[jss::type] = "STObject";
a[1U] = v;
ret[jss::FIELDS][i++] = a;
}
// {
// Json::Value a = Json::arrayValue;
// a[0U] = "ArrayEndMarker";
// Json::Value v = Json::objectValue;
// v[jss::nth] = 1;
// v[jss::isVLEncoded] = false;
// v[jss::isSerialized] = false;
// v[jss::isSigningField] = true;
// v[jss::type] = "STArray";
// a[1U] = v;
// ret[jss::FIELDS][i++] = a;
// }
{
Json::Value a = Json::arrayValue;
a[0U] = "ArrayEndMarker";
Json::Value v = Json::objectValue;
v[jss::nth] = 1;
v[jss::isVLEncoded] = false;
v[jss::isSerialized] = false;
v[jss::isSigningField] = true;
v[jss::type] = "STArray";
a[1U] = v;
ret[jss::FIELDS][i++] = a;
}
// {
// Json::Value a = Json::arrayValue;
// a[0U] = "hash";
// Json::Value v = Json::objectValue;
// v[jss::nth] = 257;
// v[jss::isVLEncoded] = false;
// v[jss::isSerialized] = false;
// v[jss::isSigningField] = false;
// v[jss::type] = "Hash256";
// a[1U] = v;
// ret[jss::FIELDS][i++] = a;
// }
{
Json::Value a = Json::arrayValue;
a[0U] = "hash";
Json::Value v = Json::objectValue;
v[jss::nth] = 257;
v[jss::isVLEncoded] = false;
v[jss::isSerialized] = false;
v[jss::isSigningField] = false;
v[jss::type] = "Hash256";
a[1U] = v;
ret[jss::FIELDS][i++] = a;
}
// {
// Json::Value a = Json::arrayValue;
// a[0U] = "index";
// Json::Value v = Json::objectValue;
// v[jss::nth] = 258;
// v[jss::isVLEncoded] = false;
// v[jss::isSerialized] = false;
// v[jss::isSigningField] = false;
// v[jss::type] = "Hash256";
// a[1U] = v;
// ret[jss::FIELDS][i++] = a;
// }
{
Json::Value a = Json::arrayValue;
a[0U] = "index";
Json::Value v = Json::objectValue;
v[jss::nth] = 258;
v[jss::isVLEncoded] = false;
v[jss::isSerialized] = false;
v[jss::isSigningField] = false;
v[jss::type] = "Hash256";
a[1U] = v;
ret[jss::FIELDS][i++] = a;
}
// {
// Json::Value a = Json::arrayValue;
// a[0U] = "taker_gets_funded";
// Json::Value v = Json::objectValue;
// v[jss::nth] = 258;
// v[jss::isVLEncoded] = false;
// v[jss::isSerialized] = false;
// v[jss::isSigningField] = false;
// v[jss::type] = "Amount";
// a[1U] = v;
// ret[jss::FIELDS][i++] = a;
// }
{
Json::Value a = Json::arrayValue;
a[0U] = "taker_gets_funded";
Json::Value v = Json::objectValue;
v[jss::nth] = 258;
v[jss::isVLEncoded] = false;
v[jss::isSerialized] = false;
v[jss::isSigningField] = false;
v[jss::type] = "Amount";
a[1U] = v;
ret[jss::FIELDS][i++] = a;
}
// {
// Json::Value a = Json::arrayValue;
// a[0U] = "taker_pays_funded";
// Json::Value v = Json::objectValue;
// v[jss::nth] = 259;
// v[jss::isVLEncoded] = false;
// v[jss::isSerialized] = false;
// v[jss::isSigningField] = false;
// v[jss::type] = "Amount";
// a[1U] = v;
// ret[jss::FIELDS][i++] = a;
// }
{
Json::Value a = Json::arrayValue;
a[0U] = "taker_pays_funded";
Json::Value v = Json::objectValue;
v[jss::nth] = 259;
v[jss::isVLEncoded] = false;
v[jss::isSerialized] = false;
v[jss::isSigningField] = false;
v[jss::type] = "Amount";
a[1U] = v;
ret[jss::FIELDS][i++] = a;
}
// for (auto const& [code, f] : ripple::SField::knownCodeToField)
// {
// if (f->fieldName == "")
// continue;
for (auto const& [code, f] : ripple::SField::knownCodeToField)
{
if (f->fieldName == "")
continue;
// Json::Value innerObj = Json::objectValue;
Json::Value innerObj = Json::objectValue;
// uint32_t fc = code & 0xFFU;
// uint32_t tc = code >> 16U;
uint32_t fc = code & 0xFFU;
uint32_t tc = code >> 16U;
// innerObj[jss::nth] = fc;
innerObj[jss::nth] = fc;
// innerObj[jss::isVLEncoded] =
// (tc == 7U /* Blob */ || tc == 8U /* AccountID */ ||
// tc == 19U /* Vector256 */);
innerObj[jss::isVLEncoded] =
(tc == 7U /* Blob */ || tc == 8U /* AccountID */ ||
tc == 19U /* Vector256 */);
// innerObj[jss::isSerialized] =
// (tc <
// 10000); /* TRANSACTION, LEDGER_ENTRY, VALIDATION, METADATA */
innerObj[jss::isSerialized] =
(tc <
10000); /* TRANSACTION, LEDGER_ENTRY, VALIDATION, METADATA */
// innerObj[jss::isSigningField] = f->shouldInclude(false);
innerObj[jss::isSigningField] = f->shouldInclude(false);
// innerObj[jss::type] = type_map[tc];
innerObj[jss::type] = type_map[tc];
// Json::Value innerArray = Json::arrayValue;
// innerArray[0U] = f->fieldName;
// innerArray[1U] = innerObj;
Json::Value innerArray = Json::arrayValue;
innerArray[0U] = f->fieldName;
innerArray[1U] = innerObj;
// ret[jss::FIELDS][i++] = innerArray;
// }
ret[jss::FIELDS][i++] = innerArray;
}
// ret[jss::TRANSACTION_RESULTS] = Json::objectValue;
// for (auto [value, name] : magic_enum::enum_entries<TELcodes>())
// ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
// for (auto [value, name] : magic_enum::enum_entries<TEMcodes>())
// ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
// for (auto [value, name] : magic_enum::enum_entries<TEFcodes>())
// ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
// for (auto [value, name] : magic_enum::enum_entries<TERcodes>())
// ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
// for (auto [value, name] : magic_enum::enum_entries<TEScodes>())
// ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
// for (auto [value, name] : magic_enum::enum_entries<TECcodes>())
// ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
ret[jss::TRANSACTION_RESULTS] = Json::objectValue;
for (auto [value, name] : magic_enum::enum_entries<TELcodes>())
ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
for (auto [value, name] : magic_enum::enum_entries<TEMcodes>())
ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
for (auto [value, name] : magic_enum::enum_entries<TEFcodes>())
ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
for (auto [value, name] : magic_enum::enum_entries<TERcodes>())
ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
for (auto [value, name] : magic_enum::enum_entries<TEScodes>())
ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
for (auto [value, name] : magic_enum::enum_entries<TECcodes>())
ret[jss::TRANSACTION_RESULTS][STR(name)] = std::stoi(STR(value));
// auto const translate_tt = [](std::string inp) -> std::string {
// if (inp == "PaychanClaim")
// return "PaymentChannelClaim";
// if (inp == "PaychanCreate")
// return "PaymentChannelCreate";
// if (inp == "PaychanFund")
// return "PaymentChannelFund";
// if (inp == "RegularKeySet")
// return "SetRegularKey";
// if (inp == "HookSet")
// return "SetHook";
// return inp;
// };
auto const translate_tt = [](std::string inp) -> std::string {
if (inp == "PaychanClaim")
return "PaymentChannelClaim";
if (inp == "PaychanCreate")
return "PaymentChannelCreate";
if (inp == "PaychanFund")
return "PaymentChannelFund";
if (inp == "RegularKeySet")
return "SetRegularKey";
if (inp == "HookSet")
return "SetHook";
return inp;
};
// ret[jss::TRANSACTION_TYPES] = Json::objectValue;
// ret[jss::TRANSACTION_TYPES][jss::Invalid] = -1;
// for (auto [value, name] : magic_enum::enum_entries<TxType>())
// ret[jss::TRANSACTION_TYPES][translate_tt(translate(STR(name).substr(2)))] =
// std::stoi(STR(value));
ret[jss::TRANSACTION_TYPES] = Json::objectValue;
ret[jss::TRANSACTION_TYPES][jss::Invalid] = -1;
for (auto [value, name] : magic_enum::enum_entries<TxType>())
ret[jss::TRANSACTION_TYPES][translate_tt(translate(STR(name).substr(2)))] =
std::stoi(STR(value));
// // generate hash
// {
// const std::string out = Json::FastWriter().write(ret);
// defsHash =
// ripple::sha512Half(ripple::Slice{out.data(), out.size()});
// ret[jss::hash] = to_string(*defsHash);
// }
// generate hash
{
const std::string out = Json::FastWriter().write(ret);
defsHash =
ripple::sha512Half(ripple::Slice{out.data(), out.size()});
ret[jss::hash] = to_string(*defsHash);
}
return ret;
}