Skip to content

Commit 44e73e0

Browse files
danelphickV8 LUCI CQ
authored andcommitted
Reland "[base] Move most of src/numbers into base"
This is a reland of 9701d4a with a small fix for some code landed in between the dry-run and submission. Original change's description: > [base] Move most of src/numbers into base > > Moves all but conversions.*, hash-seed-inl.h and math-random.* into > base, in preparation for moving the parts of conversions that don't > access HeapObjects. > > Also moves uc16 and uc32 out of commons/globals.h into base/strings.h. > > Bug: v8:11917 > Change-Id: Ife359148bb0961a63833aff40d26331454b6afb6 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2979595 > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Reviewed-by: Clemens Backes <clemensb@chromium.org> > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Auto-Submit: Dan Elphick <delphick@chromium.org> > Cr-Commit-Position: refs/heads/master@{#75354} Bug: v8:11917 Change-Id: Ie1ec9032fe56646a7c7303185cecc70fce5694ae Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2982607 Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#75368}
1 parent 84da489 commit 44e73e0

154 files changed

Lines changed: 1460 additions & 1474 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

BUILD.bazel

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,23 @@ filegroup(
246246
"src/base/logging.h",
247247
"src/base/macros.h",
248248
"src/base/memory.h",
249+
"src/base/numbers/bignum-dtoa.cc",
250+
"src/base/numbers/bignum-dtoa.h",
251+
"src/base/numbers/bignum.cc",
252+
"src/base/numbers/bignum.h",
253+
"src/base/numbers/cached-powers.cc",
254+
"src/base/numbers/cached-powers.h",
255+
"src/base/numbers/diy-fp.cc",
256+
"src/base/numbers/diy-fp.h",
257+
"src/base/numbers/double.h",
258+
"src/base/numbers/dtoa.cc",
259+
"src/base/numbers/dtoa.h",
260+
"src/base/numbers/fast-dtoa.cc",
261+
"src/base/numbers/fast-dtoa.h",
262+
"src/base/numbers/fixed-dtoa.cc",
263+
"src/base/numbers/fixed-dtoa.h",
264+
"src/base/numbers/strtod.cc",
265+
"src/base/numbers/strtod.h",
249266
"src/base/once.cc",
250267
"src/base/once.h",
251268
"src/base/optional.h",
@@ -1144,29 +1161,12 @@ filegroup(
11441161
"src/logging/tracing-flags.h",
11451162
"src/logging/runtime-call-stats.h",
11461163
"src/logging/runtime-call-stats-scope.h",
1147-
"src/numbers/bignum-dtoa.cc",
1148-
"src/numbers/bignum-dtoa.h",
1149-
"src/numbers/bignum.cc",
1150-
"src/numbers/bignum.h",
1151-
"src/numbers/cached-powers.cc",
1152-
"src/numbers/cached-powers.h",
11531164
"src/numbers/conversions-inl.h",
11541165
"src/numbers/conversions.cc",
11551166
"src/numbers/conversions.h",
1156-
"src/numbers/diy-fp.cc",
1157-
"src/numbers/diy-fp.h",
1158-
"src/numbers/double.h",
1159-
"src/numbers/dtoa.cc",
1160-
"src/numbers/dtoa.h",
1161-
"src/numbers/fast-dtoa.cc",
1162-
"src/numbers/fast-dtoa.h",
1163-
"src/numbers/fixed-dtoa.cc",
1164-
"src/numbers/fixed-dtoa.h",
11651167
"src/numbers/hash-seed-inl.h",
11661168
"src/numbers/math-random.cc",
11671169
"src/numbers/math-random.h",
1168-
"src/numbers/strtod.cc",
1169-
"src/numbers/strtod.h",
11701170
"src/objects/all-objects-inl.h",
11711171
"src/objects/allocation-site-inl.h",
11721172
"src/objects/allocation-site-scopes-inl.h",

BUILD.gn

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2815,19 +2815,10 @@ v8_header_set("v8_internal_headers") {
28152815
"src/logging/runtime-call-stats-scope.h",
28162816
"src/logging/runtime-call-stats.h",
28172817
"src/logging/tracing-flags.h",
2818-
"src/numbers/bignum-dtoa.h",
2819-
"src/numbers/bignum.h",
2820-
"src/numbers/cached-powers.h",
28212818
"src/numbers/conversions-inl.h",
28222819
"src/numbers/conversions.h",
2823-
"src/numbers/diy-fp.h",
2824-
"src/numbers/double.h",
2825-
"src/numbers/dtoa.h",
2826-
"src/numbers/fast-dtoa.h",
2827-
"src/numbers/fixed-dtoa.h",
28282820
"src/numbers/hash-seed-inl.h",
28292821
"src/numbers/math-random.h",
2830-
"src/numbers/strtod.h",
28312822
"src/objects/all-objects-inl.h",
28322823
"src/objects/allocation-site-inl.h",
28332824
"src/objects/allocation-site-scopes-inl.h",
@@ -3908,16 +3899,8 @@ v8_source_set("v8_base_without_compiler") {
39083899
"src/logging/metrics.cc",
39093900
"src/logging/runtime-call-stats.cc",
39103901
"src/logging/tracing-flags.cc",
3911-
"src/numbers/bignum-dtoa.cc",
3912-
"src/numbers/bignum.cc",
3913-
"src/numbers/cached-powers.cc",
39143902
"src/numbers/conversions.cc",
3915-
"src/numbers/diy-fp.cc",
3916-
"src/numbers/dtoa.cc",
3917-
"src/numbers/fast-dtoa.cc",
3918-
"src/numbers/fixed-dtoa.cc",
39193903
"src/numbers/math-random.cc",
3920-
"src/numbers/strtod.cc",
39213904
"src/objects/backing-store.cc",
39223905
"src/objects/bigint.cc",
39233906
"src/objects/code-kind.cc",
@@ -4669,6 +4652,23 @@ v8_component("v8_libbase") {
46694652
"src/base/logging.h",
46704653
"src/base/macros.h",
46714654
"src/base/memory.h",
4655+
"src/base/numbers/bignum-dtoa.cc",
4656+
"src/base/numbers/bignum-dtoa.h",
4657+
"src/base/numbers/bignum.cc",
4658+
"src/base/numbers/bignum.h",
4659+
"src/base/numbers/cached-powers.cc",
4660+
"src/base/numbers/cached-powers.h",
4661+
"src/base/numbers/diy-fp.cc",
4662+
"src/base/numbers/diy-fp.h",
4663+
"src/base/numbers/double.h",
4664+
"src/base/numbers/dtoa.cc",
4665+
"src/base/numbers/dtoa.h",
4666+
"src/base/numbers/fast-dtoa.cc",
4667+
"src/base/numbers/fast-dtoa.h",
4668+
"src/base/numbers/fixed-dtoa.cc",
4669+
"src/base/numbers/fixed-dtoa.h",
4670+
"src/base/numbers/strtod.cc",
4671+
"src/base/numbers/strtod.h",
46724672
"src/base/once.cc",
46734673
"src/base/once.h",
46744674
"src/base/optional.h",

src/asmjs/asm-scanner.cc

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ void AsmJsScanner::Next() {
8585

8686
for (;;) {
8787
position_ = stream_->pos();
88-
uc32 ch = stream_->Advance();
88+
base::uc32 ch = stream_->Advance();
8989
switch (ch) {
9090
case ' ':
9191
case '\t':
@@ -223,7 +223,7 @@ void AsmJsScanner::Seek(size_t pos) {
223223
Next();
224224
}
225225

226-
void AsmJsScanner::ConsumeIdentifier(uc32 ch) {
226+
void AsmJsScanner::ConsumeIdentifier(base::uc32 ch) {
227227
// Consume characters while still part of the identifier.
228228
identifier_string_.clear();
229229
while (IsIdentifierPart(ch)) {
@@ -271,7 +271,7 @@ void AsmJsScanner::ConsumeIdentifier(uc32 ch) {
271271
}
272272
}
273273

274-
void AsmJsScanner::ConsumeNumber(uc32 ch) {
274+
void AsmJsScanner::ConsumeNumber(base::uc32 ch) {
275275
std::string number;
276276
number.assign(1, ch);
277277
bool has_dot = ch == '.';
@@ -344,7 +344,7 @@ void AsmJsScanner::ConsumeNumber(uc32 ch) {
344344

345345
bool AsmJsScanner::ConsumeCComment() {
346346
for (;;) {
347-
uc32 ch = stream_->Advance();
347+
base::uc32 ch = stream_->Advance();
348348
while (ch == '*') {
349349
ch = stream_->Advance();
350350
if (ch == '/') {
@@ -362,7 +362,7 @@ bool AsmJsScanner::ConsumeCComment() {
362362

363363
void AsmJsScanner::ConsumeCPPComment() {
364364
for (;;) {
365-
uc32 ch = stream_->Advance();
365+
base::uc32 ch = stream_->Advance();
366366
if (ch == '\n') {
367367
preceded_by_newline_ = true;
368368
return;
@@ -373,11 +373,11 @@ void AsmJsScanner::ConsumeCPPComment() {
373373
}
374374
}
375375

376-
void AsmJsScanner::ConsumeString(uc32 quote) {
376+
void AsmJsScanner::ConsumeString(base::uc32 quote) {
377377
// Only string allowed is 'use asm' / "use asm".
378378
const char* expected = "use asm";
379379
for (; *expected != '\0'; ++expected) {
380-
if (stream_->Advance() != static_cast<uc32>(*expected)) {
380+
if (stream_->Advance() != static_cast<base::uc32>(*expected)) {
381381
token_ = kParseError;
382382
return;
383383
}
@@ -389,8 +389,8 @@ void AsmJsScanner::ConsumeString(uc32 quote) {
389389
token_ = kToken_UseAsm;
390390
}
391391

392-
void AsmJsScanner::ConsumeCompareOrShift(uc32 ch) {
393-
uc32 next_ch = stream_->Advance();
392+
void AsmJsScanner::ConsumeCompareOrShift(base::uc32 ch) {
393+
base::uc32 next_ch = stream_->Advance();
394394
if (next_ch == '=') {
395395
switch (ch) {
396396
case '<':
@@ -423,14 +423,16 @@ void AsmJsScanner::ConsumeCompareOrShift(uc32 ch) {
423423
}
424424
}
425425

426-
bool AsmJsScanner::IsIdentifierStart(uc32 ch) {
426+
bool AsmJsScanner::IsIdentifierStart(base::uc32 ch) {
427427
return base::IsInRange(AsciiAlphaToLower(ch), 'a', 'z') || ch == '_' ||
428428
ch == '$';
429429
}
430430

431-
bool AsmJsScanner::IsIdentifierPart(uc32 ch) { return IsAsciiIdentifier(ch); }
431+
bool AsmJsScanner::IsIdentifierPart(base::uc32 ch) {
432+
return IsAsciiIdentifier(ch);
433+
}
432434

433-
bool AsmJsScanner::IsNumberStart(uc32 ch) {
435+
bool AsmJsScanner::IsNumberStart(base::uc32 ch) {
434436
return ch == '.' || IsDecimalDigit(ch);
435437
}
436438

src/asmjs/asm-scanner.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
#include "src/asmjs/asm-names.h"
1313
#include "src/base/logging.h"
14+
#include "src/base/strings.h"
1415
#include "src/common/globals.h"
1516

1617
namespace v8 {
@@ -135,7 +136,8 @@ class V8_EXPORT_PRIVATE AsmJsScanner {
135136
};
136137
// clang-format on
137138

138-
static constexpr uc32 kEndOfInputU = static_cast<uc32>(kEndOfInput);
139+
static constexpr base::uc32 kEndOfInputU =
140+
static_cast<base::uc32>(kEndOfInput);
139141

140142
private:
141143
Utf16CharacterStream* stream_;
@@ -157,17 +159,17 @@ class V8_EXPORT_PRIVATE AsmJsScanner {
157159
bool preceded_by_newline_;
158160

159161
// Consume multiple characters.
160-
void ConsumeIdentifier(uc32 ch);
161-
void ConsumeNumber(uc32 ch);
162+
void ConsumeIdentifier(base::uc32 ch);
163+
void ConsumeNumber(base::uc32 ch);
162164
bool ConsumeCComment();
163165
void ConsumeCPPComment();
164-
void ConsumeString(uc32 quote);
165-
void ConsumeCompareOrShift(uc32 ch);
166+
void ConsumeString(base::uc32 quote);
167+
void ConsumeCompareOrShift(base::uc32 ch);
166168

167169
// Classify character categories.
168-
bool IsIdentifierStart(uc32 ch);
169-
bool IsIdentifierPart(uc32 ch);
170-
bool IsNumberStart(uc32 ch);
170+
bool IsIdentifierStart(base::uc32 ch);
171+
bool IsIdentifierPart(base::uc32 ch);
172+
bool IsNumberStart(base::uc32 ch);
171173
};
172174

173175
} // namespace internal

src/ast/ast.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
#include "src/ast/scopes.h"
1212
#include "src/base/hashmap.h"
1313
#include "src/base/logging.h"
14+
#include "src/base/numbers/double.h"
1415
#include "src/base/platform/wrappers.h"
1516
#include "src/builtins/builtins-constructor.h"
1617
#include "src/builtins/builtins.h"
1718
#include "src/common/assert-scope.h"
1819
#include "src/heap/local-factory-inl.h"
1920
#include "src/numbers/conversions-inl.h"
20-
#include "src/numbers/double.h"
2121
#include "src/objects/contexts.h"
2222
#include "src/objects/elements-kind.h"
2323
#include "src/objects/elements.h"
@@ -1044,7 +1044,7 @@ uint32_t Literal::Hash() {
10441044
return ComputeLongHash(index);
10451045
}
10461046
return IsString() ? AsRawString()->Hash()
1047-
: ComputeLongHash(double_to_uint64(AsNumber()));
1047+
: ComputeLongHash(base::double_to_uint64(AsNumber()));
10481048
}
10491049

10501050
// static
Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
#include "src/numbers/bignum-dtoa.h"
5+
#include "src/base/numbers/bignum-dtoa.h"
66

77
#include <cmath>
88

99
#include "src/base/logging.h"
10-
#include "src/numbers/bignum.h"
11-
#include "src/numbers/double.h"
12-
#include "src/utils/utils.h"
10+
#include "src/base/numbers/bignum.h"
11+
#include "src/base/numbers/double.h"
1312

1413
namespace v8 {
15-
namespace internal {
14+
namespace base {
1615

1716
static int NormalizedExponent(uint64_t significand, int exponent) {
1817
DCHECK_NE(significand, 0);
@@ -45,22 +44,22 @@ static void FixupMultiply10(int estimated_power, bool is_even,
4544
// digits yield the shortest decimal representation of v.
4645
static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
4746
Bignum* delta_minus, Bignum* delta_plus,
48-
bool is_even, base::Vector<char> buffer,
47+
bool is_even, Vector<char> buffer,
4948
int* length);
5049
// Generates 'requested_digits' after the decimal point.
5150
static void BignumToFixed(int requested_digits, int* decimal_point,
5251
Bignum* numerator, Bignum* denominator,
53-
base::Vector<char>(buffer), int* length);
52+
Vector<char>(buffer), int* length);
5453
// Generates 'count' digits of numerator/denominator.
5554
// Once 'count' digits have been produced rounds the result depending on the
5655
// remainder (remainders of exactly .5 round upwards). Might update the
5756
// decimal_point when rounding up (for example for 0.9999).
5857
static void GenerateCountedDigits(int count, int* decimal_point,
5958
Bignum* numerator, Bignum* denominator,
60-
base::Vector<char>(buffer), int* length);
59+
Vector<char>(buffer), int* length);
6160

6261
void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits,
63-
base::Vector<char> buffer, int* length, int* decimal_point) {
62+
Vector<char> buffer, int* length, int* decimal_point) {
6463
DCHECK_GT(v, 0);
6564
DCHECK(!Double(v).IsSpecial());
6665
uint64_t significand = Double(v).Significand();
@@ -135,7 +134,7 @@ void BignumDtoa(double v, BignumDtoaMode mode, int requested_digits,
135134
// will be produced. This should be the standard precondition.
136135
static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
137136
Bignum* delta_minus, Bignum* delta_plus,
138-
bool is_even, base::Vector<char> buffer,
137+
bool is_even, Vector<char> buffer,
139138
int* length) {
140139
// Small optimization: if delta_minus and delta_plus are the same just reuse
141140
// one of the two bignums.
@@ -232,7 +231,7 @@ static void GenerateShortestDigits(Bignum* numerator, Bignum* denominator,
232231
// exponent (decimal_point), when rounding upwards.
233232
static void GenerateCountedDigits(int count, int* decimal_point,
234233
Bignum* numerator, Bignum* denominator,
235-
base::Vector<char>(buffer), int* length) {
234+
Vector<char>(buffer), int* length) {
236235
DCHECK_GE(count, 0);
237236
for (int i = 0; i < count - 1; ++i) {
238237
uint16_t digit;
@@ -273,7 +272,7 @@ static void GenerateCountedDigits(int count, int* decimal_point,
273272
// Input verifies: 1 <= (numerator + delta) / denominator < 10.
274273
static void BignumToFixed(int requested_digits, int* decimal_point,
275274
Bignum* numerator, Bignum* denominator,
276-
base::Vector<char>(buffer), int* length) {
275+
Vector<char>(buffer), int* length) {
277276
// Note that we have to look at more than just the requested_digits, since
278277
// a number could be rounded up. Example: v=0.5 with requested_digits=0.
279278
// Even though the power of v equals 0 we can't just stop here.
@@ -604,5 +603,5 @@ static void FixupMultiply10(int estimated_power, bool is_even,
604603
}
605604
}
606605

607-
} // namespace internal
606+
} // namespace base
608607
} // namespace v8
Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
#ifndef V8_NUMBERS_BIGNUM_DTOA_H_
6-
#define V8_NUMBERS_BIGNUM_DTOA_H_
5+
#ifndef V8_BASE_NUMBERS_BIGNUM_DTOA_H_
6+
#define V8_BASE_NUMBERS_BIGNUM_DTOA_H_
77

88
#include "src/base/vector.h"
99

1010
namespace v8 {
11-
namespace internal {
11+
namespace base {
1212

1313
enum BignumDtoaMode {
1414
// Return the shortest correct representation.
@@ -52,12 +52,11 @@ enum BignumDtoaMode {
5252
// Halfway cases are again rounded up.
5353
// 'BignumDtoa' expects the given buffer to be big enough to hold all digits
5454
// and a terminating null-character.
55-
V8_EXPORT_PRIVATE void BignumDtoa(double v, BignumDtoaMode mode,
56-
int requested_digits,
57-
base::Vector<char> buffer, int* length,
58-
int* point);
55+
V8_BASE_EXPORT void BignumDtoa(double v, BignumDtoaMode mode,
56+
int requested_digits, Vector<char> buffer,
57+
int* length, int* point);
5958

60-
} // namespace internal
59+
} // namespace base
6160
} // namespace v8
6261

63-
#endif // V8_NUMBERS_BIGNUM_DTOA_H_
62+
#endif // V8_BASE_NUMBERS_BIGNUM_DTOA_H_

0 commit comments

Comments
 (0)