| Index: src/assembler.cc | 
| diff --git a/src/assembler.cc b/src/assembler.cc | 
| index 3c7fc1c6313557b17494907794151eccce614f35..d2269da1f1762fa1b15dadfbcb716d5af9aaeb66 100644 | 
| --- a/src/assembler.cc | 
| +++ b/src/assembler.cc | 
| @@ -1,4 +1,4 @@ | 
| -// Copyright (c) 1994-2006 Sun Microsystems Inc. | 
| +// Copyright (c) 2011 Sun Microsystems Inc. | 
| // All Rights Reserved. | 
| // | 
| // Redistribution and use in source and binary forms, with or without | 
| @@ -65,13 +65,22 @@ | 
| namespace v8 { | 
| namespace internal { | 
|  | 
| +static uint64_t kHoleNanUpper32AsInt64 = kHoleNanUpper32; | 
| +static uint64_t kCanonicalNonHoleNanUpper32AsInt64 = | 
| +    kCanonicalNonHoleNanUpper32; | 
| + | 
| +uint64_t kHoleNanInt64 = (kHoleNanUpper32AsInt64 << 32) | kHoleNanLower32; | 
| +uint64_t kCanonicalNonHoleNanInt64 = | 
| +    (kCanonicalNonHoleNanUpper32AsInt64 << 32) | kCanonicalNonHoleNanLower32; | 
|  | 
| const double DoubleConstant::min_int = kMinInt; | 
| const double DoubleConstant::one_half = 0.5; | 
| const double DoubleConstant::minus_zero = -0.0; | 
| const double DoubleConstant::uint8_max_value = 255; | 
| const double DoubleConstant::zero = 0.0; | 
| -const double DoubleConstant::nan = OS::nan_value(); | 
| +const double DoubleConstant::canonical_non_hole_nan = | 
| +    BitCast<double>(kCanonicalNonHoleNanInt64); | 
| +const double DoubleConstant::the_hole_nan = BitCast<double>(kHoleNanInt64); | 
| const double DoubleConstant::negative_infinity = -V8_INFINITY; | 
| const char* RelocInfo::kFillerCommentString = "DEOPTIMIZATION PADDING"; | 
|  | 
| @@ -921,9 +930,15 @@ ExternalReference ExternalReference::address_of_negative_infinity() { | 
| } | 
|  | 
|  | 
| -ExternalReference ExternalReference::address_of_nan() { | 
| +ExternalReference ExternalReference::address_of_canonical_non_hole_nan() { | 
| +  return ExternalReference(reinterpret_cast<void*>( | 
| +      const_cast<double*>(&DoubleConstant::canonical_non_hole_nan))); | 
| +} | 
| + | 
| + | 
| +ExternalReference ExternalReference::address_of_the_hole_nan() { | 
| return ExternalReference(reinterpret_cast<void*>( | 
| -      const_cast<double*>(&DoubleConstant::nan))); | 
| +      const_cast<double*>(&DoubleConstant::the_hole_nan))); | 
| } | 
|  | 
|  | 
|  |