summaryrefslogtreecommitdiffstats
path: root/generic/tclExecute.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/tclExecute.c')
-rw-r--r--generic/tclExecute.c29
1 files changed, 4 insertions, 25 deletions
diff --git a/generic/tclExecute.c b/generic/tclExecute.c
index c6adfd6..a1121ab 100644
--- a/generic/tclExecute.c
+++ b/generic/tclExecute.c
@@ -9554,31 +9554,10 @@ TclLog2(
long long value) /* The integer for which to compute the log
* base 2. The maximum output is 31 */
{
- int result = 0;
-
- if (value > 0x7FFFFFFF) {
- return 31;
- }
- if (value > 0xFFFF) {
- value >>= 16;
- result += 16;
- }
- if (value > 0xFF) {
- value >>= 8;
- result += 8;
- }
- if (value > 0xF) {
- value >>= 4;
- result += 4;
- }
- if (value > 0x3) {
- value >>= 2;
- result += 2;
- }
- if (value > 0x1) {
- result++;
- }
- return result;
+ return (value > 0) ? (
+ (value > 0x7FFFFFFF) ?
+ 31 : TclMSB((unsigned long long) value)
+ ) : 0;
}
/*