| Index: src/objects.h | 
| =================================================================== | 
| --- src/objects.h	(revision 3473) | 
| +++ src/objects.h	(working copy) | 
| @@ -892,15 +892,25 @@ | 
| static const int kOverflowBit = 1;  // overflow bit | 
| static const int kOverflowMask = (1 << kOverflowBit);  // overflow mask | 
|  | 
| -  // Forwarding pointers and map pointer encoding | 
| -  //  31             21 20              10 9               0 | 
| +  // Forwarding pointers and map pointer encoding. On 32 bit all the bits are | 
| +  // used. | 
| // +-----------------+------------------+-----------------+ | 
| // |forwarding offset|page offset of map|page index of map| | 
| // +-----------------+------------------+-----------------+ | 
| -  //  11 bits           11 bits            10 bits | 
| -  static const int kMapPageIndexBits = 10; | 
| -  static const int kMapPageOffsetBits = 11; | 
| -  static const int kForwardingOffsetBits = 11; | 
| +  //          ^                 ^                  ^ | 
| +  //          |                 |                  | | 
| +  //          |                 |          kMapPageIndexBits | 
| +  //          |         kMapPageOffsetBits | 
| +  // kForwardingOffsetBits | 
| +  static const int kMapPageOffsetBits = kPageSizeBits - kMapAlignmentBits; | 
| +  static const int kForwardingOffsetBits = kPageSizeBits - kObjectAlignmentBits; | 
| +#ifdef V8_HOST_ARCH_64_BIT | 
| +  static const int kMapPageIndexBits = 16; | 
| +#else | 
| +  // Use all the 32-bits to encode on a 32-bit platform. | 
| +  static const int kMapPageIndexBits = | 
| +      32 - (kMapPageOffsetBits + kForwardingOffsetBits); | 
| +#endif | 
|  | 
| static const int kMapPageIndexShift = 0; | 
| static const int kMapPageOffsetShift = | 
| @@ -908,16 +918,12 @@ | 
| static const int kForwardingOffsetShift = | 
| kMapPageOffsetShift + kMapPageOffsetBits; | 
|  | 
| -  // 0x000003FF | 
| -  static const uint32_t kMapPageIndexMask = | 
| +  // Bit masks covering the different parts the encoding. | 
| +  static const uintptr_t kMapPageIndexMask = | 
| (1 << kMapPageOffsetShift) - 1; | 
| - | 
| -  // 0x001FFC00 | 
| -  static const uint32_t kMapPageOffsetMask = | 
| +  static const uintptr_t kMapPageOffsetMask = | 
| ((1 << kForwardingOffsetShift) - 1) & ~kMapPageIndexMask; | 
| - | 
| -  // 0xFFE00000 | 
| -  static const uint32_t kForwardingOffsetMask = | 
| +  static const uintptr_t kForwardingOffsetMask = | 
| ~(kMapPageIndexMask | kMapPageOffsetMask); | 
|  | 
| private: | 
| @@ -2838,7 +2844,6 @@ | 
| // [stub cache]: contains stubs compiled for this map. | 
| DECL_ACCESSORS(code_cache, FixedArray) | 
|  | 
| -  // Returns a copy of the map. | 
| Object* CopyDropDescriptors(); | 
|  | 
| // Returns a copy of the map, with all transitions dropped from the | 
| @@ -2906,7 +2911,8 @@ | 
| static const int kInstanceDescriptorsOffset = | 
| kConstructorOffset + kPointerSize; | 
| static const int kCodeCacheOffset = kInstanceDescriptorsOffset + kPointerSize; | 
| -  static const int kSize = kCodeCacheOffset + kPointerSize; | 
| +  static const int kPadStart = kCodeCacheOffset + kPointerSize; | 
| +  static const int kSize = MAP_SIZE_ALIGN(kPadStart); | 
|  | 
| // Byte offsets within kInstanceSizesOffset. | 
| static const int kInstanceSizeOffset = kInstanceSizesOffset + 0; | 
|  |