diff options
Diffstat (limited to 'deps/v8/src/objects-inl.h')
-rw-r--r-- | deps/v8/src/objects-inl.h | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/deps/v8/src/objects-inl.h b/deps/v8/src/objects-inl.h index d34e46539e..8c83715649 100644 --- a/deps/v8/src/objects-inl.h +++ b/deps/v8/src/objects-inl.h @@ -481,11 +481,6 @@ bool Object::IsMapCache() { } -bool Object::IsLookupCache() { - return IsHashTable(); -} - - bool Object::IsPrimitive() { return IsOddball() || IsNumber() || IsString(); } @@ -659,6 +654,12 @@ Object* Object::GetProperty(String* key, PropertyAttributes* attributes) { #define WRITE_INT_FIELD(p, offset, value) \ (*reinterpret_cast<int*>(FIELD_ADDR(p, offset)) = value) +#define READ_INTPTR_FIELD(p, offset) \ + (*reinterpret_cast<intptr_t*>(FIELD_ADDR(p, offset))) + +#define WRITE_INTPTR_FIELD(p, offset, value) \ + (*reinterpret_cast<intptr_t*>(FIELD_ADDR(p, offset)) = value) + #define READ_UINT32_FIELD(p, offset) \ (*reinterpret_cast<uint32_t*>(FIELD_ADDR(p, offset))) @@ -1304,7 +1305,6 @@ int DescriptorArray::Search(String* name) { } - String* DescriptorArray::GetKey(int descriptor_number) { ASSERT(descriptor_number < number_of_descriptors()); return String::cast(get(ToKeyIndex(descriptor_number))); @@ -1388,7 +1388,6 @@ CAST_ACCESSOR(Dictionary) CAST_ACCESSOR(SymbolTable) CAST_ACCESSOR(CompilationCacheTable) CAST_ACCESSOR(MapCache) -CAST_ACCESSOR(LookupCache) CAST_ACCESSOR(String) CAST_ACCESSOR(SeqString) CAST_ACCESSOR(SeqAsciiString) @@ -1786,11 +1785,17 @@ int Map::inobject_properties() { int HeapObject::SizeFromMap(Map* map) { InstanceType instance_type = map->instance_type(); - // Only inline the two most frequent cases. - if (instance_type == JS_OBJECT_TYPE) return map->instance_size(); + // Only inline the most frequent cases. + if (instance_type == JS_OBJECT_TYPE || + (instance_type & (kIsNotStringMask | kStringRepresentationMask)) == + (kStringTag | kConsStringTag) || + instance_type == JS_ARRAY_TYPE) return map->instance_size(); if (instance_type == FIXED_ARRAY_TYPE) { return reinterpret_cast<FixedArray*>(this)->FixedArraySize(); } + if (instance_type == BYTE_ARRAY_TYPE) { + return reinterpret_cast<ByteArray*>(this)->ByteArraySize(); + } // Otherwise do the general size computation. return SlowSizeFromMap(map); } @@ -2130,6 +2135,7 @@ ACCESSORS(BreakPointInfo, statement_position, Smi, kStatementPositionIndex) ACCESSORS(BreakPointInfo, break_point_objects, Object, kBreakPointObjectsIndex) #endif +ACCESSORS(SharedFunctionInfo, construct_stub, Code, kConstructStubOffset) ACCESSORS(SharedFunctionInfo, name, Object, kNameOffset) ACCESSORS(SharedFunctionInfo, instance_class_name, Object, kInstanceClassNameOffset) @@ -2303,12 +2309,12 @@ void JSBuiltinsObject::set_javascript_builtin(Builtins::JavaScript id, Address Proxy::proxy() { - return AddressFrom<Address>(READ_INT_FIELD(this, kProxyOffset)); + return AddressFrom<Address>(READ_INTPTR_FIELD(this, kProxyOffset)); } void Proxy::set_proxy(Address value) { - WRITE_INT_FIELD(this, kProxyOffset, OffsetFrom(value)); + WRITE_INTPTR_FIELD(this, kProxyOffset, OffsetFrom(value)); } @@ -2639,6 +2645,13 @@ void Map::ClearCodeCache() { } +void JSArray::EnsureSize(int required_size) { + ASSERT(HasFastElements()); + if (elements()->length() >= required_size) return; + Expand(required_size); +} + + void JSArray::SetContent(FixedArray* storage) { set_length(Smi::FromInt(storage->length()), SKIP_WRITE_BARRIER); set_elements(storage); |