| Index: src/code-stubs.h | 
| diff --git a/src/code-stubs.h b/src/code-stubs.h | 
| index 4848768382c9e207b0f2c4e2b6accc4110d95983..d26747584202168227a82fa4a330cee940a3ff9d 100644 | 
| --- a/src/code-stubs.h | 
| +++ b/src/code-stubs.h | 
| @@ -781,8 +781,9 @@ class HandlerStub: public HICStub { | 
|  | 
| class LoadFieldStub: public HandlerStub { | 
| public: | 
| -  LoadFieldStub(bool inobject, int index) : HandlerStub() { | 
| -    Initialize(Code::LOAD_IC, inobject, index); | 
| +  LoadFieldStub(bool inobject, int index, Representation representation) | 
| +      : HandlerStub() { | 
| +    Initialize(Code::LOAD_IC, inobject, index, representation); | 
| } | 
|  | 
| virtual Handle<Code> GenerateCode(); | 
| @@ -792,6 +793,7 @@ class LoadFieldStub: public HandlerStub { | 
| CodeStubInterfaceDescriptor* descriptor); | 
|  | 
| Representation representation() { | 
| +    if (unboxed_double()) return Representation::Double(); | 
| return Representation::Tagged(); | 
| } | 
|  | 
| @@ -810,21 +812,31 @@ class LoadFieldStub: public HandlerStub { | 
| return FixedArray::kHeaderSize + offset; | 
| } | 
|  | 
| +  bool unboxed_double() { | 
| +    return UnboxedDoubleBits::decode(bit_field_); | 
| +  } | 
| + | 
| virtual Code::StubType GetStubType() { return Code::FIELD; } | 
|  | 
| protected: | 
| LoadFieldStub() : HandlerStub() { } | 
|  | 
| -  void Initialize(Code::Kind kind, bool inobject, int index) { | 
| +  void Initialize(Code::Kind kind, | 
| +                  bool inobject, | 
| +                  int index, | 
| +                  Representation representation) { | 
| +    bool unboxed_double = FLAG_track_double_fields && representation.IsDouble(); | 
| bit_field_ = KindBits::encode(kind) | 
| | InobjectBits::encode(inobject) | 
| -        | IndexBits::encode(index); | 
| +        | IndexBits::encode(index) | 
| +        | UnboxedDoubleBits::encode(unboxed_double); | 
| } | 
|  | 
| private: | 
| STATIC_ASSERT(KindBits::kSize == 4); | 
| class InobjectBits: public BitField<bool, 4, 1> {}; | 
| class IndexBits: public BitField<int, 5, 11> {}; | 
| +  class UnboxedDoubleBits: public BitField<bool, 16, 1> {}; | 
| virtual CodeStub::Major MajorKey() { return LoadField; } | 
| virtual int NotMissMinorKey() { return bit_field_; } | 
|  | 
| @@ -834,8 +846,9 @@ class LoadFieldStub: public HandlerStub { | 
|  | 
| class KeyedLoadFieldStub: public LoadFieldStub { | 
| public: | 
| -  KeyedLoadFieldStub(bool inobject, int index) : LoadFieldStub() { | 
| -    Initialize(Code::KEYED_LOAD_IC, inobject, index); | 
| +  KeyedLoadFieldStub(bool inobject, int index, Representation representation) | 
| +      : LoadFieldStub() { | 
| +    Initialize(Code::KEYED_LOAD_IC, inobject, index, representation); | 
| } | 
|  | 
| virtual void InitializeInterfaceDescriptor( | 
|  |