Index: src/globals.h |
diff --git a/src/globals.h b/src/globals.h |
index 83fa2fa720e7b660034d84df15ee9a3c4a2e18cb..0f5de6a56807b9eb6690138a85c0713fdc66caad 100644 |
--- a/src/globals.h |
+++ b/src/globals.h |
@@ -227,25 +227,46 @@ template <typename T, class P = FreeStoreAllocationPolicy> class List; |
enum LanguageMode { |
// LanguageMode is expressed as a bitmask. Descriptions of the bits: |
- STRICT = 1 << 0, |
+ STRICT_BIT = 1 << 0, |
+ SANE_BIT = 1 << 1, |
LANGUAGE_END, |
// Shorthands for some common language modes. |
- SLOPPY = 0 |
+ SLOPPY = 0, |
+ STRICT = STRICT_BIT, |
+ SANE = STRICT_BIT | SANE_BIT |
}; |
inline bool is_strict(LanguageMode language_mode) { |
- return language_mode & STRICT; |
+ return language_mode & STRICT_BIT; |
} |
+ |
inline bool is_sloppy(LanguageMode language_mode) { |
rossberg
2015/02/04 16:18:08
Nit: perhaps reorder methods.
marja
2015/02/05 12:11:37
Done.
|
- return (language_mode & STRICT) == 0; |
+ return (language_mode & STRICT_BIT) == 0; |
} |
+ |
+inline bool is_sane(LanguageMode language_mode) { |
+ return language_mode & SANE_BIT; |
+} |
+ |
+ |
inline bool is_valid_language_mode(int language_mode) { |
- return language_mode == SLOPPY || language_mode == STRICT; |
+ return language_mode == SLOPPY || language_mode == STRICT || |
+ language_mode == SANE; |
} |
+ |
+inline LanguageMode construct_language_mode(bool strict_bit, bool sane_bit) { |
+ int language_mode = 0; |
+ if (strict_bit) language_mode |= STRICT_BIT; |
+ if (sane_bit) language_mode |= SANE_BIT; |
+ DCHECK(is_valid_language_mode(language_mode)); |
+ return static_cast<LanguageMode>(language_mode); |
+} |
+ |
+ |
// Mask for the sign bit in a smi. |
const intptr_t kSmiSignMask = kIntptrSignBit; |