Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 3939921bf7304378b13540fc4a1fda3f426216b3..f632a2d1176e78d1f69936591805929af24b4fb0 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -2284,12 +2284,18 @@ void FixedDoubleArray::FillWithHoles(int from, int to) { |
} |
-SMI_ACCESSORS( |
- ConstantPoolArray, first_code_ptr_index, kFirstCodePointerIndexOffset) |
-SMI_ACCESSORS( |
- ConstantPoolArray, first_heap_ptr_index, kFirstHeapPointerIndexOffset) |
-SMI_ACCESSORS( |
- ConstantPoolArray, first_int32_index, kFirstInt32IndexOffset) |
+void ConstantPoolArray::set_weak_object_state( |
+ ConstantPoolArray::WeakObjectState state) { |
+ int old_layout_field = READ_INT_FIELD(this, kArrayLayoutOffset); |
+ int new_layout_field = WeakObjectStateField::update(old_layout_field, state); |
+ WRITE_INT_FIELD(this, kArrayLayoutOffset, new_layout_field); |
+} |
+ |
+ |
+ConstantPoolArray::WeakObjectState ConstantPoolArray::get_weak_object_state() { |
+ int layout_field = READ_INT_FIELD(this, kArrayLayoutOffset); |
+ return WeakObjectStateField::decode(layout_field); |
+} |
int ConstantPoolArray::first_int64_index() { |
@@ -2297,6 +2303,27 @@ int ConstantPoolArray::first_int64_index() { |
} |
+int ConstantPoolArray::first_code_ptr_index() { |
+ int layout_field = READ_INT_FIELD(this, kArrayLayoutOffset); |
+ return first_int64_index() + |
+ NumberOfInt64EntriesField::decode(layout_field); |
+} |
+ |
+ |
+int ConstantPoolArray::first_heap_ptr_index() { |
+ int layout_field = READ_INT_FIELD(this, kArrayLayoutOffset); |
+ return first_code_ptr_index() + |
+ NumberOfCodePtrEntriesField::decode(layout_field); |
+} |
+ |
+ |
+int ConstantPoolArray::first_int32_index() { |
+ int layout_field = READ_INT_FIELD(this, kArrayLayoutOffset); |
+ return first_heap_ptr_index() + |
+ NumberOfHeapPtrEntriesField::decode(layout_field); |
+} |
+ |
+ |
int ConstantPoolArray::count_of_int64_entries() { |
return first_code_ptr_index(); |
} |
@@ -2317,18 +2344,20 @@ int ConstantPoolArray::count_of_int32_entries() { |
} |
-void ConstantPoolArray::SetEntryCounts(int number_of_int64_entries, |
- int number_of_code_ptr_entries, |
- int number_of_heap_ptr_entries, |
- int number_of_int32_entries) { |
- int current_index = number_of_int64_entries; |
- set_first_code_ptr_index(current_index); |
- current_index += number_of_code_ptr_entries; |
- set_first_heap_ptr_index(current_index); |
- current_index += number_of_heap_ptr_entries; |
- set_first_int32_index(current_index); |
- current_index += number_of_int32_entries; |
- set_length(current_index); |
+void ConstantPoolArray::Init(int number_of_int64_entries, |
+ int number_of_code_ptr_entries, |
+ int number_of_heap_ptr_entries, |
+ int number_of_int32_entries) { |
+ set_length(number_of_int64_entries + |
+ number_of_code_ptr_entries + |
+ number_of_heap_ptr_entries + |
+ number_of_int32_entries); |
+ int layout_field = |
+ NumberOfInt64EntriesField::encode(number_of_int64_entries) | |
+ NumberOfCodePtrEntriesField::encode(number_of_code_ptr_entries) | |
+ NumberOfHeapPtrEntriesField::encode(number_of_heap_ptr_entries) | |
+ WeakObjectStateField::encode(NO_WEAK_OBJECTS); |
+ WRITE_INT_FIELD(this, kArrayLayoutOffset, layout_field); |
} |
@@ -4733,7 +4762,6 @@ Object* Code::GetObjectFromEntryAddress(Address location_of_address) { |
bool Code::IsWeakObjectInOptimizedCode(Object* object) { |
- ASSERT(is_optimized_code()); |
if (object->IsMap()) { |
return Map::cast(object)->CanTransition() && |
FLAG_collect_maps && |