Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(84)

Side by Side Diff: src/objects-inl.h

Issue 1226203011: Remove unused byte from Map::instance_sizes field. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Ported to all architectures. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 // 4 //
5 // Review notes: 5 // Review notes:
6 // 6 //
7 // - The use of macros in these inline functions may seem superfluous 7 // - The use of macros in these inline functions may seem superfluous
8 // but it is absolutely needed to make sure gcc generates optimal 8 // but it is absolutely needed to make sure gcc generates optimal
9 // code. gcc is not happy when attempting to inline too deep. 9 // code. gcc is not happy when attempting to inline too deep.
10 // 10 //
(...skipping 2130 matching lines...) Expand 10 before | Expand all | Expand 10 after
2141 void JSObject::InitializeBody(Map* map, 2141 void JSObject::InitializeBody(Map* map,
2142 Object* pre_allocated_value, 2142 Object* pre_allocated_value,
2143 Object* filler_value) { 2143 Object* filler_value) {
2144 DCHECK(!filler_value->IsHeapObject() || 2144 DCHECK(!filler_value->IsHeapObject() ||
2145 !GetHeap()->InNewSpace(filler_value)); 2145 !GetHeap()->InNewSpace(filler_value));
2146 DCHECK(!pre_allocated_value->IsHeapObject() || 2146 DCHECK(!pre_allocated_value->IsHeapObject() ||
2147 !GetHeap()->InNewSpace(pre_allocated_value)); 2147 !GetHeap()->InNewSpace(pre_allocated_value));
2148 int size = map->instance_size(); 2148 int size = map->instance_size();
2149 int offset = kHeaderSize; 2149 int offset = kHeaderSize;
2150 if (filler_value != pre_allocated_value) { 2150 if (filler_value != pre_allocated_value) {
2151 int pre_allocated = map->pre_allocated_property_fields(); 2151 int pre_allocated =
2152 map->inobject_properties() - map->unused_property_fields();
2152 DCHECK(pre_allocated * kPointerSize + kHeaderSize <= size); 2153 DCHECK(pre_allocated * kPointerSize + kHeaderSize <= size);
2153 for (int i = 0; i < pre_allocated; i++) { 2154 for (int i = 0; i < pre_allocated; i++) {
2154 WRITE_FIELD(this, offset, pre_allocated_value); 2155 WRITE_FIELD(this, offset, pre_allocated_value);
2155 offset += kPointerSize; 2156 offset += kPointerSize;
2156 } 2157 }
2157 } 2158 }
2158 while (offset < size) { 2159 while (offset < size) {
2159 WRITE_FIELD(this, offset, filler_value); 2160 WRITE_FIELD(this, offset, filler_value);
2160 offset += kPointerSize; 2161 offset += kPointerSize;
2161 } 2162 }
(...skipping 1914 matching lines...) Expand 10 before | Expand all | Expand 10 after
4076 return NOBARRIER_READ_BYTE_FIELD( 4077 return NOBARRIER_READ_BYTE_FIELD(
4077 this, kInstanceSizeOffset) << kPointerSizeLog2; 4078 this, kInstanceSizeOffset) << kPointerSizeLog2;
4078 } 4079 }
4079 4080
4080 4081
4081 int Map::inobject_properties() { 4082 int Map::inobject_properties() {
4082 return READ_BYTE_FIELD(this, kInObjectPropertiesOffset); 4083 return READ_BYTE_FIELD(this, kInObjectPropertiesOffset);
4083 } 4084 }
4084 4085
4085 4086
4086 int Map::pre_allocated_property_fields() {
4087 return READ_BYTE_FIELD(this, kPreAllocatedPropertyFieldsOffset);
4088 }
4089
4090
4091 int Map::GetInObjectPropertyOffset(int index) { 4087 int Map::GetInObjectPropertyOffset(int index) {
4092 // Adjust for the number of properties stored in the object. 4088 // Adjust for the number of properties stored in the object.
4093 index -= inobject_properties(); 4089 index -= inobject_properties();
4094 DCHECK(index <= 0); 4090 DCHECK(index <= 0);
4095 return instance_size() + (index * kPointerSize); 4091 return instance_size() + (index * kPointerSize);
4096 } 4092 }
4097 4093
4098 4094
4099 Handle<Map> Map::CopyInstallDescriptorsForTesting( 4095 Handle<Map> Map::CopyInstallDescriptorsForTesting(
4100 Handle<Map> map, int new_descriptor, Handle<DescriptorArray> descriptors, 4096 Handle<Map> map, int new_descriptor, Handle<DescriptorArray> descriptors,
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
4154 this, kInstanceSizeOffset, static_cast<byte>(value)); 4150 this, kInstanceSizeOffset, static_cast<byte>(value));
4155 } 4151 }
4156 4152
4157 4153
4158 void Map::set_inobject_properties(int value) { 4154 void Map::set_inobject_properties(int value) {
4159 DCHECK(0 <= value && value < 256); 4155 DCHECK(0 <= value && value < 256);
4160 WRITE_BYTE_FIELD(this, kInObjectPropertiesOffset, static_cast<byte>(value)); 4156 WRITE_BYTE_FIELD(this, kInObjectPropertiesOffset, static_cast<byte>(value));
4161 } 4157 }
4162 4158
4163 4159
4164 void Map::set_pre_allocated_property_fields(int value) { 4160 void Map::clear_unused() { WRITE_BYTE_FIELD(this, kUnusedOffset, 0); }
4165 DCHECK(0 <= value && value < 256);
4166 WRITE_BYTE_FIELD(this,
4167 kPreAllocatedPropertyFieldsOffset,
4168 static_cast<byte>(value));
4169 }
4170 4161
4171 4162
4172 InstanceType Map::instance_type() { 4163 InstanceType Map::instance_type() {
4173 return static_cast<InstanceType>(READ_BYTE_FIELD(this, kInstanceTypeOffset)); 4164 return static_cast<InstanceType>(READ_BYTE_FIELD(this, kInstanceTypeOffset));
4174 } 4165 }
4175 4166
4176 4167
4177 void Map::set_instance_type(InstanceType value) { 4168 void Map::set_instance_type(InstanceType value) {
4178 WRITE_BYTE_FIELD(this, kInstanceTypeOffset, value); 4169 WRITE_BYTE_FIELD(this, kInstanceTypeOffset, value);
4179 } 4170 }
(...skipping 3135 matching lines...) Expand 10 before | Expand all | Expand 10 after
7315 #undef READ_SHORT_FIELD 7306 #undef READ_SHORT_FIELD
7316 #undef WRITE_SHORT_FIELD 7307 #undef WRITE_SHORT_FIELD
7317 #undef READ_BYTE_FIELD 7308 #undef READ_BYTE_FIELD
7318 #undef WRITE_BYTE_FIELD 7309 #undef WRITE_BYTE_FIELD
7319 #undef NOBARRIER_READ_BYTE_FIELD 7310 #undef NOBARRIER_READ_BYTE_FIELD
7320 #undef NOBARRIER_WRITE_BYTE_FIELD 7311 #undef NOBARRIER_WRITE_BYTE_FIELD
7321 7312
7322 } } // namespace v8::internal 7313 } } // namespace v8::internal
7323 7314
7324 #endif // V8_OBJECTS_INL_H_ 7315 #endif // V8_OBJECTS_INL_H_
OLDNEW
« no previous file with comments | « src/objects-debug.cc ('k') | src/objects-printer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698