| Index: include/v8.h
 | 
| diff --git a/include/v8.h b/include/v8.h
 | 
| index 334a6e16bfe69367c93ff8647ed3bc2c579a6d0d..fa238742d5d4f16f68f0816c850f58cc275b284a 100644
 | 
| --- a/include/v8.h
 | 
| +++ b/include/v8.h
 | 
| @@ -1921,9 +1921,16 @@ class V8_EXPORT Value : public Data {
 | 
|     */
 | 
|    V8_INLINE bool IsNull() const;
 | 
|  
 | 
| -   /**
 | 
| -   * Returns true if this value is true.
 | 
| +  /**
 | 
| +   * Returns true if this value is either the null or the undefined value.
 | 
| +   * See ECMA-262
 | 
| +   * 4.3.11. and 4.3.12
 | 
|     */
 | 
| +  V8_INLINE bool IsNullOrUndefined() const;
 | 
| +
 | 
| +  /**
 | 
| +  * Returns true if this value is true.
 | 
| +  */
 | 
|    bool IsTrue() const;
 | 
|  
 | 
|    /**
 | 
| @@ -2243,6 +2250,7 @@ class V8_EXPORT Value : public Data {
 | 
|   private:
 | 
|    V8_INLINE bool QuickIsUndefined() const;
 | 
|    V8_INLINE bool QuickIsNull() const;
 | 
| +  V8_INLINE bool QuickIsNullOrUndefined() const;
 | 
|    V8_INLINE bool QuickIsString() const;
 | 
|    bool FullIsUndefined() const;
 | 
|    bool FullIsNull() const;
 | 
| @@ -9144,6 +9152,23 @@ bool Value::QuickIsNull() const {
 | 
|    return (I::GetOddballKind(obj) == I::kNullOddballKind);
 | 
|  }
 | 
|  
 | 
| +bool Value::IsNullOrUndefined() const {
 | 
| +#ifdef V8_ENABLE_CHECKS
 | 
| +  return FullIsNull() || FullIsUndefined();
 | 
| +#else
 | 
| +  return QuickIsNullOrUndefined();
 | 
| +#endif
 | 
| +}
 | 
| +
 | 
| +bool Value::QuickIsNullOrUndefined() const {
 | 
| +  typedef internal::Object O;
 | 
| +  typedef internal::Internals I;
 | 
| +  O* obj = *reinterpret_cast<O* const*>(this);
 | 
| +  if (!I::HasHeapObjectTag(obj)) return false;
 | 
| +  if (I::GetInstanceType(obj) != I::kOddballType) return false;
 | 
| +  int kind = I::GetOddballKind(obj);
 | 
| +  return kind == I::kNullOddballKind || kind == I::kUndefinedOddballKind;
 | 
| +}
 | 
|  
 | 
|  bool Value::IsString() const {
 | 
|  #ifdef V8_ENABLE_CHECKS
 | 
| 
 |