From 55bdf90f60d72b2c3278edcc693b2e12425ba421 Mon Sep 17 00:00:00 2001 From: "bmeurer@chromium.org" Date: Mon, 20 Oct 2014 12:37:48 +0000 Subject: [PATCH] Drop obsolete misc-intrinsics.h file. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/648643003 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24742 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/misc-intrinsics.h | 66 ------------------------------------------ src/runtime/runtime-numbers.cc | 6 ++-- 2 files changed, 3 insertions(+), 69 deletions(-) delete mode 100644 src/misc-intrinsics.h diff --git a/src/misc-intrinsics.h b/src/misc-intrinsics.h deleted file mode 100644 index 5256a29..0000000 --- a/src/misc-intrinsics.h +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2011 the V8 project authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef V8_MISC_INTRINSICS_H_ -#define V8_MISC_INTRINSICS_H_ - -#include "include/v8.h" -#include "src/globals.h" - -namespace v8 { -namespace internal { - -// Returns the index of the leading 1 bit, counting the least significant bit at -// index 0. (1 << IntegerLog2(x)) is a mask for the most significant bit of x. -// Result is undefined if input is zero. -int IntegerLog2(uint32_t value); - -#if defined(__GNUC__) - -inline int IntegerLog2(uint32_t value) { - return 31 - __builtin_clz(value); -} - -#elif defined(_MSC_VER) - -#pragma intrinsic(_BitScanReverse) - -inline int IntegerLog2(uint32_t value) { - unsigned long result; // NOLINT: MSVC intrinsic demands this type. - _BitScanReverse(&result, value); - return result; -} - -#else - -// Default version using regular operations. Code taken from: -// http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog -inline int IntegerLog2(uint32_t value) { - int result, shift; - - shift = (value > 0xFFFF) << 4; - value >>= shift; - result = shift; - - shift = (value > 0xFF) << 3; - value >>= shift; - result |= shift; - - shift = (value > 0xF) << 2; - value >>= shift; - result |= shift; - - shift = (value > 0x3) << 1; - value >>= shift; - result |= shift; - - result |= (value >> 1); - - return result; -} -#endif - -} } // namespace v8::internal - -#endif // V8_MISC_INTRINSICS_H_ diff --git a/src/runtime/runtime-numbers.cc b/src/runtime/runtime-numbers.cc index 7953dac..5e645be 100644 --- a/src/runtime/runtime-numbers.cc +++ b/src/runtime/runtime-numbers.cc @@ -5,9 +5,9 @@ #include "src/v8.h" #include "src/arguments.h" +#include "src/base/bits.h" #include "src/bootstrapper.h" #include "src/codegen.h" -#include "src/misc-intrinsics.h" #include "src/runtime/runtime-utils.h" @@ -525,11 +525,11 @@ RUNTIME_FUNCTION(Runtime_SmiLexicographicCompare) { // integer comes first in the lexicographic order. // From http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog10 - int x_log2 = IntegerLog2(x_scaled); + int x_log2 = 31 - base::bits::CountLeadingZeros32(x_scaled); int x_log10 = ((x_log2 + 1) * 1233) >> 12; x_log10 -= x_scaled < kPowersOf10[x_log10]; - int y_log2 = IntegerLog2(y_scaled); + int y_log2 = 31 - base::bits::CountLeadingZeros32(y_scaled); int y_log10 = ((y_log2 + 1) * 1233) >> 12; y_log10 -= y_scaled < kPowersOf10[y_log10]; -- 2.7.4