| Index: src/type-cache.h
|
| diff --git a/src/zone-type-cache.h b/src/type-cache.h
|
| similarity index 67%
|
| rename from src/zone-type-cache.h
|
| rename to src/type-cache.h
|
| index f723997badd5b3161df2c137c515fe39e910d11c..27db3f3b82bd77dc996aae178b5741ff5de62e02 100644
|
| --- a/src/zone-type-cache.h
|
| +++ b/src/type-cache.h
|
| @@ -2,22 +2,23 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef V8_ZONE_TYPE_CACHE_H_
|
| -#define V8_ZONE_TYPE_CACHE_H_
|
| -
|
| +#ifndef V8_TYPE_CACHE_H_
|
| +#define V8_TYPE_CACHE_H_
|
|
|
| #include "src/types.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
|
|
| -class ZoneTypeCache final {
|
| +class TypeCache final {
|
| private:
|
| // This has to be first for the initialization magic to work.
|
| Zone zone_;
|
|
|
| public:
|
| - ZoneTypeCache() = default;
|
| + static TypeCache const& Get();
|
| +
|
| + TypeCache() = default;
|
|
|
| Type* const kInt8 =
|
| CreateNative(CreateRange<int8_t>(), Type::UntaggedSigned8());
|
| @@ -34,6 +35,9 @@ class ZoneTypeCache final {
|
| Type* const kFloat32 = CreateNative(Type::Number(), Type::UntaggedFloat32());
|
| Type* const kFloat64 = CreateNative(Type::Number(), Type::UntaggedFloat64());
|
|
|
| + Type* const kSmi = CreateNative(Type::SignedSmall(), Type::TaggedSigned());
|
| + Type* const kHeapNumber = CreateNative(Type::Number(), Type::TaggedPointer());
|
| +
|
| Type* const kSingletonZero = CreateRange(0.0, 0.0);
|
| Type* const kSingletonOne = CreateRange(1.0, 1.0);
|
| Type* const kZeroOrOne = CreateRange(0.0, 1.0);
|
| @@ -43,6 +47,26 @@ class ZoneTypeCache final {
|
| Type* const kInteger = CreateRange(-V8_INFINITY, V8_INFINITY);
|
| Type* const kWeakint = Type::Union(kInteger, Type::MinusZeroOrNaN(), zone());
|
|
|
| + // The FixedArray::length property always containts a smi in the range
|
| + // [0, FixedArray::kMaxLength].
|
| + Type* const kFixedArrayLengthType = CreateNative(
|
| + CreateRange(0.0, FixedArray::kMaxLength), Type::TaggedSigned());
|
| +
|
| + // The FixedDoubleArray::length property always containts a smi in the range
|
| + // [0, FixedDoubleArray::kMaxLength].
|
| + Type* const kFixedDoubleArrayLengthType = CreateNative(
|
| + CreateRange(0.0, FixedDoubleArray::kMaxLength), Type::TaggedSigned());
|
| +
|
| + // The JSArray::length property always contains a tagged number in the range
|
| + // [0, kMaxUInt32].
|
| + Type* const kJSArrayLengthType =
|
| + CreateNative(CreateRange(0.0, kMaxUInt32), Type::Tagged());
|
| +
|
| + // The String::length property always contains a smi in the range
|
| + // [0, String::kMaxLength].
|
| + Type* const kStringLengthType =
|
| + CreateNative(CreateRange(0.0, String::kMaxLength), Type::TaggedSigned());
|
| +
|
| #define TYPED_ARRAY(TypeName, type_name, TYPE_NAME, ctype, size) \
|
| Type* const k##TypeName##Array = CreateArray(k##TypeName);
|
| TYPED_ARRAYS(TYPED_ARRAY)
|
| @@ -78,4 +102,4 @@ class ZoneTypeCache final {
|
| } // namespace internal
|
| } // namespace v8
|
|
|
| -#endif // V8_ZONE_TYPE_CACHE_H_
|
| +#endif // V8_TYPE_CACHE_H_
|
|
|