mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-20 10:35:50 +00:00
Compare commits
9 Commits
nd-suppres
...
fix-float
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2ec0683902 | ||
|
|
91cc584e6d | ||
|
|
638a2ba34a | ||
|
|
8cf6bfcef9 | ||
|
|
c9d57adc83 | ||
|
|
762d8e74a1 | ||
|
|
610c0ca40f | ||
|
|
4e0b11fa1b | ||
|
|
b0698053f6 |
@@ -5404,7 +5404,7 @@ DEFINE_HOOK_FUNCTION(
|
|||||||
const int64_t float_one_internal = make_float(1000000000000000ull, -15, false);
|
const int64_t float_one_internal = make_float(1000000000000000ull, -15, false);
|
||||||
|
|
||||||
inline int64_t
|
inline int64_t
|
||||||
float_divide_internal(int64_t float1, int64_t float2)
|
float_divide_internal(int64_t float1, int64_t float2, bool hasFix)
|
||||||
{
|
{
|
||||||
RETURN_IF_INVALID_FLOAT(float1);
|
RETURN_IF_INVALID_FLOAT(float1);
|
||||||
RETURN_IF_INVALID_FLOAT(float2);
|
RETURN_IF_INVALID_FLOAT(float2);
|
||||||
@@ -5457,8 +5457,16 @@ float_divide_internal(int64_t float1, int64_t float2)
|
|||||||
while (man2 > 0)
|
while (man2 > 0)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (; man1 > man2; man1 -= man2, ++i)
|
if (hasFix)
|
||||||
;
|
{
|
||||||
|
for (; man1 >= man2; man1 -= man2, ++i)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (; man1 > man2; man1 -= man2, ++i)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
man3 *= 10;
|
man3 *= 10;
|
||||||
man3 += i;
|
man3 += i;
|
||||||
@@ -5478,7 +5486,8 @@ DEFINE_HOOK_FUNCTION(int64_t, float_divide, int64_t float1, int64_t float2)
|
|||||||
HOOK_SETUP(); // populates memory_ctx, memory, memory_length, applyCtx,
|
HOOK_SETUP(); // populates memory_ctx, memory, memory_length, applyCtx,
|
||||||
// hookCtx on current stack
|
// hookCtx on current stack
|
||||||
|
|
||||||
return float_divide_internal(float1, float2);
|
bool const hasFix = view.rules().enabled(fixFloatDivide);
|
||||||
|
return float_divide_internal(float1, float2, hasFix);
|
||||||
|
|
||||||
HOOK_TEARDOWN();
|
HOOK_TEARDOWN();
|
||||||
}
|
}
|
||||||
@@ -5497,7 +5506,9 @@ DEFINE_HOOK_FUNCTION(int64_t, float_invert, int64_t float1)
|
|||||||
return DIVISION_BY_ZERO;
|
return DIVISION_BY_ZERO;
|
||||||
if (float1 == float_one_internal)
|
if (float1 == float_one_internal)
|
||||||
return float_one_internal;
|
return float_one_internal;
|
||||||
return float_divide_internal(float_one_internal, float1);
|
|
||||||
|
bool const fixV3 = view.rules().enabled(fixFloatDivide);
|
||||||
|
return float_divide_internal(float_one_internal, float1, fixV3);
|
||||||
|
|
||||||
HOOK_TEARDOWN();
|
HOOK_TEARDOWN();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ namespace detail {
|
|||||||
// Feature.cpp. Because it's only used to reserve storage, and determine how
|
// Feature.cpp. Because it's only used to reserve storage, and determine how
|
||||||
// large to make the FeatureBitset, it MAY be larger. It MUST NOT be less than
|
// large to make the FeatureBitset, it MAY be larger. It MUST NOT be less than
|
||||||
// the actual number of amendments. A LogicError on startup will verify this.
|
// the actual number of amendments. A LogicError on startup will verify this.
|
||||||
static constexpr std::size_t numFeatures = 73;
|
static constexpr std::size_t numFeatures = 74;
|
||||||
|
|
||||||
/** Amendments that this server supports and the default voting behavior.
|
/** Amendments that this server supports and the default voting behavior.
|
||||||
Whether they are enabled depends on the Rules defined in the validated
|
Whether they are enabled depends on the Rules defined in the validated
|
||||||
@@ -361,6 +361,7 @@ extern uint256 const fixNSDelete;
|
|||||||
extern uint256 const fix240819;
|
extern uint256 const fix240819;
|
||||||
extern uint256 const fixPageCap;
|
extern uint256 const fixPageCap;
|
||||||
extern uint256 const fix240911;
|
extern uint256 const fix240911;
|
||||||
|
extern uint256 const fixFloatDivide;
|
||||||
|
|
||||||
} // namespace ripple
|
} // namespace ripple
|
||||||
|
|
||||||
|
|||||||
@@ -467,6 +467,7 @@ REGISTER_FIX (fixNSDelete, Supported::yes, VoteBehavior::De
|
|||||||
REGISTER_FIX (fix240819, Supported::yes, VoteBehavior::DefaultYes);
|
REGISTER_FIX (fix240819, Supported::yes, VoteBehavior::DefaultYes);
|
||||||
REGISTER_FIX (fixPageCap, Supported::yes, VoteBehavior::DefaultYes);
|
REGISTER_FIX (fixPageCap, Supported::yes, VoteBehavior::DefaultYes);
|
||||||
REGISTER_FIX (fix240911, Supported::yes, VoteBehavior::DefaultYes);
|
REGISTER_FIX (fix240911, Supported::yes, VoteBehavior::DefaultYes);
|
||||||
|
REGISTER_FIX (fixFloatDivide, Supported::yes, VoteBehavior::DefaultYes);
|
||||||
|
|
||||||
// The following amendments are obsolete, but must remain supported
|
// The following amendments are obsolete, but must remain supported
|
||||||
// because they could potentially get enabled.
|
// because they could potentially get enabled.
|
||||||
|
|||||||
Reference in New Issue
Block a user