Index: src/types.h |
diff --git a/src/types.h b/src/types.h |
index 31ee95cbb46069b21cf7e0764bebc21c9c74459d..66f209c12b7c09ec0af209dfabe3e9b827bfe21f 100644 |
--- a/src/types.h |
+++ b/src/types.h |
@@ -207,8 +207,8 @@ namespace internal { |
V(Symbol, 1u << 12 | REPRESENTATION(kTaggedPointer)) \ |
V(InternalizedString, 1u << 13 | REPRESENTATION(kTaggedPointer)) \ |
V(OtherString, 1u << 14 | REPRESENTATION(kTaggedPointer)) \ |
- V(Undetectable, 1u << 15 | REPRESENTATION(kTaggedPointer)) \ |
- /* Unused semantic bit 1u << 16 in case you are looking for a bit. */ \ |
+ V(Simd, 1u << 15 | REPRESENTATION(kTaggedPointer)) \ |
+ V(Undetectable, 1u << 16 | REPRESENTATION(kTaggedPointer)) \ |
V(OtherObject, 1u << 17 | REPRESENTATION(kTaggedPointer)) \ |
V(Proxy, 1u << 18 | REPRESENTATION(kTaggedPointer)) \ |
V(Internal, 1u << 19 | REPRESENTATION(kTagged | kUntagged)) \ |
@@ -231,7 +231,7 @@ namespace internal { |
V(NumberOrString, kNumber | kString) \ |
V(NumberOrUndefined, kNumber | kUndefined) \ |
V(PlainPrimitive, kNumberOrString | kBoolean | kNullOrUndefined) \ |
- V(Primitive, kSymbol | kPlainPrimitive) \ |
+ V(Primitive, kSymbol | kSimd | kPlainPrimitive) \ |
V(DetectableReceiver, kOtherObject | kProxy) \ |
V(Detectable, kDetectableReceiver | kNumber | kName) \ |
V(Object, kOtherObject | kUndetectable) \ |
@@ -277,6 +277,7 @@ namespace internal { |
// typedef Range; |
// typedef Region; |
// template<class> struct Handle { typedef type; } // No template typedefs... |
+// |
// template<class T> static Handle<T>::type null_handle(); |
// template<class T> static Handle<T>::type handle(T* t); // !is_bitset(t) |
// template<class T> static Handle<T>::type cast(Handle<Type>::type); |
@@ -423,6 +424,11 @@ class TypeImpl : public Config::Base { |
return function; |
} |
+#define CONSTRUCT_SIMD_TYPE(NAME, Name, name, lane_count, lane_type) \ |
+ static TypeHandle Name(Isolate* isolate, Region* region); |
+ SIMD128_TYPES(CONSTRUCT_SIMD_TYPE) |
+#undef CONSTRUCT_SIMD_TYPE |
+ |
static TypeHandle Union(TypeHandle type1, TypeHandle type2, Region* reg); |
static TypeHandle Intersect(TypeHandle type1, TypeHandle type2, Region* reg); |
static TypeImpl* Union(TypeImpl* type1, TypeImpl* type2) { |