Index: src/type-cache.h |
diff --git a/src/type-cache.h b/src/type-cache.h |
index 5eed557f7dff59782815e9458c285fd3dcab8b20..512d9b9a2648d5771b82f0e4d60810007a95762a 100644 |
--- a/src/type-cache.h |
+++ b/src/type-cache.h |
@@ -54,7 +54,25 @@ class TypeCache final { |
Type* const kPositiveSafeInteger = CreateRange(0.0, kMaxSafeInteger); |
- Type* const kIntegral32 = Type::Union(kInt32, kUint32, zone()); |
+ // Asm.js related types. |
+ Type* const kAsmSigned = kInt32; |
+ Type* const kAsmUnsigned = kUint32; |
+ Type* const kAsmInt = Type::Union(kAsmSigned, kAsmUnsigned, zone()); |
+ Type* const kAsmFixnum = Type::Intersect(kAsmSigned, kAsmUnsigned, zone()); |
+ Type* const kAsmFloat = kFloat32; |
+ Type* const kAsmDouble = kFloat64; |
+ // Asm.js size unions. |
+ Type* const kAsmSize8 = Type::Union(kInt8, kUint8, zone()); |
+ Type* const kAsmSize16 = Type::Union(kInt16, kUint16, zone()); |
+ Type* const kAsmSize32 = |
+ Type::Union(Type::Union(kInt32, kUint32, zone()), kAsmFloat, zone()); |
+ Type* const kAsmSize64 = kFloat64; |
+ // Asm.js other types. |
+ Type* const kAsmComparable = Type::Union( |
+ kAsmSigned, |
+ Type::Union(kAsmUnsigned, Type::Union(kAsmDouble, kAsmFloat, zone()), |
+ zone()), |
+ zone()); |
// The FixedArray::length property always containts a smi in the range |
// [0, FixedArray::kMaxLength]. |