Index: src/objects.h |
diff --git a/src/objects.h b/src/objects.h |
index abfa963d2bec07814ed85e98cb2e0402255baa08..cb090edc20ca80017ebdde1345fbaef58928ef65 100644 |
--- a/src/objects.h |
+++ b/src/objects.h |
@@ -187,6 +187,12 @@ enum ContextualMode { |
}; |
+enum MutableMode { |
+ MUTABLE, |
+ IMMUTABLE |
+}; |
+ |
+ |
static const int kGrowICDelta = STORE_AND_GROW_NO_TRANSITION - |
STANDARD_STORE; |
STATIC_ASSERT(STANDARD_STORE == 0); |
@@ -373,6 +379,7 @@ const int kStubMinorKeyBits = kBitsPerInt - kSmiTagSize - kStubMajorKeyBits; |
V(PROPERTY_CELL_TYPE) \ |
\ |
V(HEAP_NUMBER_TYPE) \ |
+ V(MUTABLE_HEAP_NUMBER_TYPE) \ |
V(FOREIGN_TYPE) \ |
V(BYTE_ARRAY_TYPE) \ |
V(FREE_SPACE_TYPE) \ |
@@ -721,6 +728,7 @@ enum InstanceType { |
// "Data", objects that cannot contain non-map-word pointers to heap |
// objects. |
HEAP_NUMBER_TYPE, |
+ MUTABLE_HEAP_NUMBER_TYPE, |
FOREIGN_TYPE, |
BYTE_ARRAY_TYPE, |
FREE_SPACE_TYPE, |
@@ -992,6 +1000,7 @@ class MaybeObject BASE_EMBEDDED { |
#define HEAP_OBJECT_TYPE_LIST(V) \ |
V(HeapNumber) \ |
+ V(MutableHeapNumber) \ |
V(Name) \ |
V(UniqueName) \ |
V(String) \ |
@@ -1510,7 +1519,7 @@ class Object : public MaybeObject { |
} else if (FLAG_track_fields && representation.IsSmi()) { |
return IsSmi(); |
} else if (FLAG_track_double_fields && representation.IsDouble()) { |
- return IsNumber(); |
+ return IsMutableHeapNumber() || IsNumber(); |
} else if (FLAG_track_heap_object_fields && representation.IsHeapObject()) { |
return IsHeapObject(); |
} |
@@ -1519,6 +1528,7 @@ class Object : public MaybeObject { |
inline MaybeObject* AllocateNewStorageFor(Heap* heap, |
Representation representation); |
+ inline MaybeObject* WrapForRead(Heap* heap, Representation representation); |
// Returns true if the object is of the correct type to be used as a |
// implementation of a JSObject's elements. |
@@ -2616,6 +2626,9 @@ class JSObject: public JSReceiver { |
MUST_USE_RESULT inline MaybeObject* FastPropertyAt( |
Representation representation, |
int index); |
+ static Handle<Object> FastPropertyAt(Handle<JSObject> object, |
+ Representation representation, |
+ int index); |
inline Object* RawFastPropertyAt(int index); |
inline void FastPropertyAtPut(int index, Object* value); |