Index: src/property.h |
diff --git a/src/property.h b/src/property.h |
index 093285c94e77c7c5df7b2eeed336abd038652ede..ebb43430a04b6920f8aec27ae35f9f64f4cb470a 100644 |
--- a/src/property.h |
+++ b/src/property.h |
@@ -7,6 +7,8 @@ |
#include "src/isolate.h" |
#include "src/factory.h" |
+#include "src/field-index.h" |
+#include "src/field-index-inl.h" |
#include "src/types.h" |
namespace v8 { |
@@ -108,56 +110,6 @@ class CallbacksDescriptor V8_FINAL : public Descriptor { |
}; |
-// Holds a property index value distinguishing if it is a field index or an |
-// index inside the object header. |
-class PropertyIndex V8_FINAL { |
- public: |
- static PropertyIndex NewFieldIndex(int index) { |
- return PropertyIndex(index, false); |
- } |
- static PropertyIndex NewHeaderIndex(int index) { |
- return PropertyIndex(index, true); |
- } |
- |
- bool is_field_index() { return (index_ & kHeaderIndexBit) == 0; } |
- bool is_header_index() { return (index_ & kHeaderIndexBit) != 0; } |
- |
- int field_index() { |
- ASSERT(is_field_index()); |
- return value(); |
- } |
- int header_index() { |
- ASSERT(is_header_index()); |
- return value(); |
- } |
- |
- bool is_inobject(Handle<JSObject> holder) { |
- if (is_header_index()) return true; |
- return field_index() < holder->map()->inobject_properties(); |
- } |
- |
- int translate(Handle<JSObject> holder) { |
- if (is_header_index()) return header_index(); |
- int index = field_index() - holder->map()->inobject_properties(); |
- if (index >= 0) return index; |
- return index + holder->map()->instance_size() / kPointerSize; |
- } |
- |
- private: |
- static const int kHeaderIndexBit = 1 << 31; |
- static const int kIndexMask = ~kHeaderIndexBit; |
- |
- int value() { return index_ & kIndexMask; } |
- |
- PropertyIndex(int index, bool is_header_based) |
- : index_(index | (is_header_based ? kHeaderIndexBit : 0)) { |
- ASSERT(index <= kIndexMask); |
- } |
- |
- int index_; |
-}; |
- |
- |
class LookupResult V8_FINAL BASE_EMBEDDED { |
public: |
explicit LookupResult(Isolate* isolate) |
@@ -374,7 +326,7 @@ class LookupResult V8_FINAL BASE_EMBEDDED { |
case DICTIONARY_TYPE: |
switch (type()) { |
case FIELD: |
- return holder()->RawFastPropertyAt(GetFieldIndex().field_index()); |
+ return holder()->RawFastPropertyAt(GetFieldIndex()); |
case NORMAL: { |
Object* value = holder()->property_dictionary()->ValueAt( |
GetDictionaryEntry()); |
@@ -416,10 +368,10 @@ class LookupResult V8_FINAL BASE_EMBEDDED { |
return number_; |
} |
- PropertyIndex GetFieldIndex() const { |
+ FieldIndex GetFieldIndex() const { |
ASSERT(lookup_type_ == DESCRIPTOR_TYPE || |
lookup_type_ == TRANSITION_TYPE); |
- return PropertyIndex::NewFieldIndex(GetFieldIndexFromMap(holder()->map())); |
+ return FieldIndex::ForLookupResult(this); |
} |
int GetLocalFieldIndexFromMap(Map* map) const { |