OLD | NEW |
---|---|
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
210 String::cast(this)->IsAsciiRepresentation(); | 210 String::cast(this)->IsAsciiRepresentation(); |
211 } | 211 } |
212 | 212 |
213 | 213 |
214 bool Object::IsExternalTwoByteString() { | 214 bool Object::IsExternalTwoByteString() { |
215 if (!IsString()) return false; | 215 if (!IsString()) return false; |
216 return StringShape(String::cast(this)).IsExternal() && | 216 return StringShape(String::cast(this)).IsExternal() && |
217 String::cast(this)->IsTwoByteRepresentation(); | 217 String::cast(this)->IsTwoByteRepresentation(); |
218 } | 218 } |
219 | 219 |
220 bool Object::HasValidElements() { | |
221 // Dictionary is covered under FixedArray. | |
222 return IsFixedArray() || IsFixedDoubleArray() || IsExternalArray(); | |
223 } | |
220 | 224 |
221 StringShape::StringShape(String* str) | 225 StringShape::StringShape(String* str) |
222 : type_(str->map()->instance_type()) { | 226 : type_(str->map()->instance_type()) { |
223 set_valid(); | 227 set_valid(); |
224 ASSERT((type_ & kIsNotStringMask) == kStringTag); | 228 ASSERT((type_ & kIsNotStringMask) == kStringTag); |
225 } | 229 } |
226 | 230 |
227 | 231 |
228 StringShape::StringShape(Map* map) | 232 StringShape::StringShape(Map* map) |
229 : type_(map->instance_type()) { | 233 : type_(map->instance_type()) { |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
482 && HeapObject::cast(this)->map()->instance_type() == MAP_TYPE; | 486 && HeapObject::cast(this)->map()->instance_type() == MAP_TYPE; |
483 } | 487 } |
484 | 488 |
485 | 489 |
486 bool Object::IsFixedArray() { | 490 bool Object::IsFixedArray() { |
487 return Object::IsHeapObject() | 491 return Object::IsHeapObject() |
488 && HeapObject::cast(this)->map()->instance_type() == FIXED_ARRAY_TYPE; | 492 && HeapObject::cast(this)->map()->instance_type() == FIXED_ARRAY_TYPE; |
489 } | 493 } |
490 | 494 |
491 | 495 |
496 bool Object::IsFixedDoubleArray() { | |
497 return Object::IsHeapObject() | |
498 && HeapObject::cast(this)->map()->instance_type() == | |
499 FIXED_DOUBLE_ARRAY_TYPE; | |
500 } | |
501 | |
502 | |
492 bool Object::IsDescriptorArray() { | 503 bool Object::IsDescriptorArray() { |
493 return IsFixedArray(); | 504 return IsFixedArray(); |
494 } | 505 } |
495 | 506 |
496 | 507 |
497 bool Object::IsDeoptimizationInputData() { | 508 bool Object::IsDeoptimizationInputData() { |
498 // Must be a fixed array. | 509 // Must be a fixed array. |
499 if (!IsFixedArray()) return false; | 510 if (!IsFixedArray()) return false; |
500 | 511 |
501 // There's no sure way to detect the difference between a fixed array and | 512 // There's no sure way to detect the difference between a fixed array and |
(...skipping 804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1306 int HeapNumber::get_sign() { | 1317 int HeapNumber::get_sign() { |
1307 return READ_INT_FIELD(this, kExponentOffset) & kSignMask; | 1318 return READ_INT_FIELD(this, kExponentOffset) & kSignMask; |
1308 } | 1319 } |
1309 | 1320 |
1310 | 1321 |
1311 ACCESSORS(JSObject, properties, FixedArray, kPropertiesOffset) | 1322 ACCESSORS(JSObject, properties, FixedArray, kPropertiesOffset) |
1312 | 1323 |
1313 | 1324 |
1314 HeapObject* JSObject::elements() { | 1325 HeapObject* JSObject::elements() { |
1315 Object* array = READ_FIELD(this, kElementsOffset); | 1326 Object* array = READ_FIELD(this, kElementsOffset); |
1316 // In the assert below Dictionary is covered under FixedArray. | 1327 ASSERT(array->HasValidElements()); |
1317 ASSERT(array->IsFixedArray() || array->IsExternalArray()); | |
1318 return reinterpret_cast<HeapObject*>(array); | 1328 return reinterpret_cast<HeapObject*>(array); |
1319 } | 1329 } |
1320 | 1330 |
1321 | 1331 |
1322 void JSObject::set_elements(HeapObject* value, WriteBarrierMode mode) { | 1332 void JSObject::set_elements(HeapObject* value, WriteBarrierMode mode) { |
1323 ASSERT(map()->has_fast_elements() == | 1333 ASSERT(map()->has_fast_elements() == |
1324 (value->map() == GetHeap()->fixed_array_map() || | 1334 (value->map() == GetHeap()->fixed_array_map() || |
1325 value->map() == GetHeap()->fixed_cow_array_map())); | 1335 value->map() == GetHeap()->fixed_cow_array_map())); |
1326 // In the assert below Dictionary is covered under FixedArray. | 1336 ASSERT(value->HasValidElements()); |
1327 ASSERT(value->IsFixedArray() || value->IsExternalArray()); | |
1328 WRITE_FIELD(this, kElementsOffset, value); | 1337 WRITE_FIELD(this, kElementsOffset, value); |
1329 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kElementsOffset, mode); | 1338 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kElementsOffset, mode); |
1330 } | 1339 } |
1331 | 1340 |
1332 | 1341 |
1333 void JSObject::initialize_properties() { | 1342 void JSObject::initialize_properties() { |
1334 ASSERT(!GetHeap()->InNewSpace(GetHeap()->empty_fixed_array())); | 1343 ASSERT(!GetHeap()->InNewSpace(GetHeap()->empty_fixed_array())); |
1335 WRITE_FIELD(this, kPropertiesOffset, GetHeap()->empty_fixed_array()); | 1344 WRITE_FIELD(this, kPropertiesOffset, GetHeap()->empty_fixed_array()); |
1336 } | 1345 } |
1337 | 1346 |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1588 | 1597 |
1589 void FixedArray::set(int index, Object* value) { | 1598 void FixedArray::set(int index, Object* value) { |
1590 ASSERT(map() != HEAP->fixed_cow_array_map()); | 1599 ASSERT(map() != HEAP->fixed_cow_array_map()); |
1591 ASSERT(index >= 0 && index < this->length()); | 1600 ASSERT(index >= 0 && index < this->length()); |
1592 int offset = kHeaderSize + index * kPointerSize; | 1601 int offset = kHeaderSize + index * kPointerSize; |
1593 WRITE_FIELD(this, offset, value); | 1602 WRITE_FIELD(this, offset, value); |
1594 WRITE_BARRIER(this, offset); | 1603 WRITE_BARRIER(this, offset); |
1595 } | 1604 } |
1596 | 1605 |
1597 | 1606 |
1607 int FixedDoubleArray::length() { | |
Mads Ager (chromium)
2011/06/06 07:58:23
For length you can use use the INT_ACCESSORS macro
danno
2011/06/08 12:09:43
Done.
| |
1608 return READ_INT_FIELD(this, kLengthOffset); | |
1609 } | |
1610 | |
1611 | |
1612 void FixedDoubleArray::set_length(int length) { | |
1613 WRITE_INT_FIELD(this, kLengthOffset, length); | |
1614 } | |
1615 | |
1616 | |
1617 double FixedDoubleArray::get(int index) { | |
1618 ASSERT(index >= 0 && index < this->length()); | |
1619 double result = READ_DOUBLE_FIELD(this, kHeaderSize + index * kDoubleSize); | |
1620 ASSERT(!is_the_hole_nan(result)); | |
1621 return result; | |
1622 } | |
1623 | |
1624 | |
1625 void FixedDoubleArray::set(int index, double value) { | |
1626 ASSERT(map() != HEAP->fixed_cow_array_map()); | |
1627 int offset = kHeaderSize + index * kDoubleSize; | |
1628 if (isnan(value)) value = canonical_not_the_hole_nan_as_double(); | |
1629 WRITE_DOUBLE_FIELD(this, offset, value); | |
1630 } | |
1631 | |
1632 | |
1633 void FixedDoubleArray::set_the_hole(int index) { | |
1634 ASSERT(map() != HEAP->fixed_cow_array_map()); | |
1635 int offset = kHeaderSize + index * kDoubleSize; | |
1636 WRITE_DOUBLE_FIELD(this, offset, hole_nan_as_double()); | |
1637 } | |
1638 | |
1639 | |
1640 bool FixedDoubleArray::is_the_hole(int index) { | |
1641 int offset = kHeaderSize + index * kDoubleSize; | |
1642 return is_the_hole_nan(READ_DOUBLE_FIELD(this, offset)); | |
1643 } | |
1644 | |
1645 | |
1646 void FixedDoubleArray::Initialize(FixedDoubleArray* from) { | |
1647 int old_length = from->length(); | |
1648 ASSERT(old_length < length()); | |
1649 memcpy(FIELD_ADDR(this, kHeaderSize), | |
Mads Ager (chromium)
2011/06/06 07:58:23
Use our own MemCopy?
danno
2011/06/08 12:09:43
Done.
| |
1650 FIELD_ADDR(from, kHeaderSize), | |
1651 old_length * kDoubleSize); | |
1652 int offset = kHeaderSize + old_length * kDoubleSize; | |
1653 for (int current = from->length(); current < length(); ++current) { | |
1654 WRITE_DOUBLE_FIELD(this, offset, hole_nan_as_double()); | |
1655 offset += kDoubleSize; | |
1656 } | |
1657 } | |
1658 | |
1659 | |
1660 void FixedDoubleArray::Initialize(FixedArray* from) { | |
1661 int old_length = from->length(); | |
1662 ASSERT(old_length < length()); | |
1663 Heap* heap = GetHeap(); | |
1664 for (int i = 0; i < old_length; i++) { | |
1665 Object* hole_or_object = from->get(i); | |
1666 if (hole_or_object == heap->the_hole_value()) { | |
Mads Ager (chromium)
2011/06/06 07:58:23
hole_or_object->IsTheHole()
danno
2011/06/08 12:09:43
Done.
| |
1667 set_the_hole(i); | |
1668 } else { | |
1669 set(i, hole_or_object->Number()); | |
1670 } | |
1671 } | |
1672 int offset = kHeaderSize + old_length * kDoubleSize; | |
1673 for (int current = from->length(); current < length(); ++current) { | |
1674 WRITE_DOUBLE_FIELD(this, offset, hole_nan_as_double()); | |
1675 offset += kDoubleSize; | |
1676 } | |
1677 } | |
1678 | |
1679 | |
1680 void FixedDoubleArray::Initialize(NumberDictionary* from) { | |
1681 int offset = kHeaderSize; | |
1682 for (int current = 0; current < length(); ++current) { | |
1683 WRITE_DOUBLE_FIELD(this, offset, hole_nan_as_double()); | |
1684 offset += kDoubleSize; | |
1685 } | |
1686 for (int i = 0; i < from->Capacity(); i++) { | |
1687 Object* key = from->KeyAt(i); | |
1688 if (key->IsNumber()) { | |
1689 uint32_t entry = static_cast<uint32_t>(key->Number()); | |
1690 set(entry, from->ValueAt(i)->Number()); | |
1691 } | |
1692 } | |
1693 } | |
1694 | |
1695 | |
1598 WriteBarrierMode HeapObject::GetWriteBarrierMode(const AssertNoAllocation&) { | 1696 WriteBarrierMode HeapObject::GetWriteBarrierMode(const AssertNoAllocation&) { |
1599 if (GetHeap()->InNewSpace(this)) return SKIP_WRITE_BARRIER; | 1697 if (GetHeap()->InNewSpace(this)) return SKIP_WRITE_BARRIER; |
1600 return UPDATE_WRITE_BARRIER; | 1698 return UPDATE_WRITE_BARRIER; |
1601 } | 1699 } |
1602 | 1700 |
1603 | 1701 |
1604 void FixedArray::set(int index, | 1702 void FixedArray::set(int index, |
1605 Object* value, | 1703 Object* value, |
1606 WriteBarrierMode mode) { | 1704 WriteBarrierMode mode) { |
1607 ASSERT(map() != HEAP->fixed_cow_array_map()); | 1705 ASSERT(map() != HEAP->fixed_cow_array_map()); |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1888 void NumberDictionary::set_requires_slow_elements() { | 1986 void NumberDictionary::set_requires_slow_elements() { |
1889 set(kMaxNumberKeyIndex, Smi::FromInt(kRequiresSlowElementsMask)); | 1987 set(kMaxNumberKeyIndex, Smi::FromInt(kRequiresSlowElementsMask)); |
1890 } | 1988 } |
1891 | 1989 |
1892 | 1990 |
1893 // ------------------------------------ | 1991 // ------------------------------------ |
1894 // Cast operations | 1992 // Cast operations |
1895 | 1993 |
1896 | 1994 |
1897 CAST_ACCESSOR(FixedArray) | 1995 CAST_ACCESSOR(FixedArray) |
1996 CAST_ACCESSOR(FixedDoubleArray) | |
1898 CAST_ACCESSOR(DescriptorArray) | 1997 CAST_ACCESSOR(DescriptorArray) |
1899 CAST_ACCESSOR(DeoptimizationInputData) | 1998 CAST_ACCESSOR(DeoptimizationInputData) |
1900 CAST_ACCESSOR(DeoptimizationOutputData) | 1999 CAST_ACCESSOR(DeoptimizationOutputData) |
1901 CAST_ACCESSOR(SymbolTable) | 2000 CAST_ACCESSOR(SymbolTable) |
1902 CAST_ACCESSOR(JSFunctionResultCache) | 2001 CAST_ACCESSOR(JSFunctionResultCache) |
1903 CAST_ACCESSOR(NormalizedMapCache) | 2002 CAST_ACCESSOR(NormalizedMapCache) |
1904 CAST_ACCESSOR(CompilationCacheTable) | 2003 CAST_ACCESSOR(CompilationCacheTable) |
1905 CAST_ACCESSOR(CodeCacheHashTable) | 2004 CAST_ACCESSOR(CodeCacheHashTable) |
1906 CAST_ACCESSOR(MapCache) | 2005 CAST_ACCESSOR(MapCache) |
1907 CAST_ACCESSOR(String) | 2006 CAST_ACCESSOR(String) |
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2410 return SeqAsciiString::SizeFor( | 2509 return SeqAsciiString::SizeFor( |
2411 reinterpret_cast<SeqAsciiString*>(this)->length()); | 2510 reinterpret_cast<SeqAsciiString*>(this)->length()); |
2412 } | 2511 } |
2413 if (instance_type == BYTE_ARRAY_TYPE) { | 2512 if (instance_type == BYTE_ARRAY_TYPE) { |
2414 return reinterpret_cast<ByteArray*>(this)->ByteArraySize(); | 2513 return reinterpret_cast<ByteArray*>(this)->ByteArraySize(); |
2415 } | 2514 } |
2416 if (instance_type == STRING_TYPE) { | 2515 if (instance_type == STRING_TYPE) { |
2417 return SeqTwoByteString::SizeFor( | 2516 return SeqTwoByteString::SizeFor( |
2418 reinterpret_cast<SeqTwoByteString*>(this)->length()); | 2517 reinterpret_cast<SeqTwoByteString*>(this)->length()); |
2419 } | 2518 } |
2519 if (instance_type == FIXED_DOUBLE_ARRAY_TYPE) { | |
2520 return FixedDoubleArray::SizeFor( | |
2521 reinterpret_cast<FixedDoubleArray*>(this)->length()); | |
2522 } | |
2420 ASSERT(instance_type == CODE_TYPE); | 2523 ASSERT(instance_type == CODE_TYPE); |
2421 return reinterpret_cast<Code*>(this)->CodeSize(); | 2524 return reinterpret_cast<Code*>(this)->CodeSize(); |
2422 } | 2525 } |
2423 | 2526 |
2424 | 2527 |
2425 void Map::set_instance_size(int value) { | 2528 void Map::set_instance_size(int value) { |
2426 ASSERT_EQ(0, value & (kPointerSize - 1)); | 2529 ASSERT_EQ(0, value & (kPointerSize - 1)); |
2427 value >>= kPointerSizeLog2; | 2530 value >>= kPointerSizeLog2; |
2428 ASSERT(0 <= value && value < 256); | 2531 ASSERT(0 <= value && value < 256); |
2429 WRITE_BYTE_FIELD(this, kInstanceSizeOffset, static_cast<byte>(value)); | 2532 WRITE_BYTE_FIELD(this, kInstanceSizeOffset, static_cast<byte>(value)); |
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2968 | 3071 |
2969 | 3072 |
2970 MaybeObject* Map::GetFastElementsMap() { | 3073 MaybeObject* Map::GetFastElementsMap() { |
2971 if (has_fast_elements()) return this; | 3074 if (has_fast_elements()) return this; |
2972 Object* obj; | 3075 Object* obj; |
2973 { MaybeObject* maybe_obj = CopyDropTransitions(); | 3076 { MaybeObject* maybe_obj = CopyDropTransitions(); |
2974 if (!maybe_obj->ToObject(&obj)) return maybe_obj; | 3077 if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
2975 } | 3078 } |
2976 Map* new_map = Map::cast(obj); | 3079 Map* new_map = Map::cast(obj); |
2977 new_map->set_elements_kind(JSObject::FAST_ELEMENTS); | 3080 new_map->set_elements_kind(JSObject::FAST_ELEMENTS); |
2978 isolate()->counters()->map_slow_to_fast_elements()->Increment(); | 3081 isolate()->counters()->map_to_fast_elements()->Increment(); |
2979 return new_map; | 3082 return new_map; |
2980 } | 3083 } |
2981 | 3084 |
3085 | |
3086 MaybeObject* Map::GetFastDoubleElementsMap() { | |
3087 if (has_fast_double_elements()) return this; | |
3088 Object* obj; | |
3089 { MaybeObject* maybe_obj = CopyDropTransitions(); | |
3090 if (!maybe_obj->ToObject(&obj)) return maybe_obj; | |
3091 } | |
3092 Map* new_map = Map::cast(obj); | |
3093 new_map->set_elements_kind(JSObject::FAST_DOUBLE_ELEMENTS); | |
3094 isolate()->counters()->map_to_fast_double_elements()->Increment(); | |
3095 return new_map; | |
3096 } | |
3097 | |
2982 | 3098 |
2983 MaybeObject* Map::GetSlowElementsMap() { | 3099 MaybeObject* Map::GetSlowElementsMap() { |
2984 if (!has_fast_elements()) return this; | 3100 if (!has_fast_elements()) return this; |
2985 Object* obj; | 3101 Object* obj; |
2986 { MaybeObject* maybe_obj = CopyDropTransitions(); | 3102 { MaybeObject* maybe_obj = CopyDropTransitions(); |
2987 if (!maybe_obj->ToObject(&obj)) return maybe_obj; | 3103 if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
2988 } | 3104 } |
2989 Map* new_map = Map::cast(obj); | 3105 Map* new_map = Map::cast(obj); |
2990 new_map->set_elements_kind(JSObject::DICTIONARY_ELEMENTS); | 3106 new_map->set_elements_kind(JSObject::DICTIONARY_ELEMENTS); |
2991 isolate()->counters()->map_fast_to_slow_elements()->Increment(); | 3107 isolate()->counters()->map_to_slow_elements()->Increment(); |
2992 return new_map; | 3108 return new_map; |
2993 } | 3109 } |
2994 | 3110 |
2995 | 3111 |
2996 DescriptorArray* Map::instance_descriptors() { | 3112 DescriptorArray* Map::instance_descriptors() { |
2997 Object* object = READ_FIELD(this, kInstanceDescriptorsOrBitField3Offset); | 3113 Object* object = READ_FIELD(this, kInstanceDescriptorsOrBitField3Offset); |
2998 if (object->IsSmi()) { | 3114 if (object->IsSmi()) { |
2999 return HEAP->empty_descriptor_array(); | 3115 return HEAP->empty_descriptor_array(); |
3000 } else { | 3116 } else { |
3001 return DescriptorArray::cast(object); | 3117 return DescriptorArray::cast(object); |
(...skipping 771 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3773 ASSERT(index >= kDataIndex); // Only implementation data can be set this way. | 3889 ASSERT(index >= kDataIndex); // Only implementation data can be set this way. |
3774 FixedArray::cast(data())->set(index, value); | 3890 FixedArray::cast(data())->set(index, value); |
3775 } | 3891 } |
3776 | 3892 |
3777 | 3893 |
3778 JSObject::ElementsKind JSObject::GetElementsKind() { | 3894 JSObject::ElementsKind JSObject::GetElementsKind() { |
3779 ElementsKind kind = map()->elements_kind(); | 3895 ElementsKind kind = map()->elements_kind(); |
3780 ASSERT((kind == FAST_ELEMENTS && | 3896 ASSERT((kind == FAST_ELEMENTS && |
3781 (elements()->map() == GetHeap()->fixed_array_map() || | 3897 (elements()->map() == GetHeap()->fixed_array_map() || |
3782 elements()->map() == GetHeap()->fixed_cow_array_map())) || | 3898 elements()->map() == GetHeap()->fixed_cow_array_map())) || |
3899 (kind == FAST_DOUBLE_ELEMENTS && | |
3900 elements()->IsFixedDoubleArray()) || | |
3783 (kind == DICTIONARY_ELEMENTS && | 3901 (kind == DICTIONARY_ELEMENTS && |
3784 elements()->IsFixedArray() && | 3902 elements()->IsFixedArray() && |
3785 elements()->IsDictionary()) || | 3903 elements()->IsDictionary()) || |
3786 (kind > DICTIONARY_ELEMENTS)); | 3904 (kind > DICTIONARY_ELEMENTS)); |
3787 return kind; | 3905 return kind; |
3788 } | 3906 } |
3789 | 3907 |
3790 | 3908 |
3791 bool JSObject::HasFastElements() { | 3909 bool JSObject::HasFastElements() { |
3792 return GetElementsKind() == FAST_ELEMENTS; | 3910 return GetElementsKind() == FAST_ELEMENTS; |
3793 } | 3911 } |
3794 | 3912 |
3795 | 3913 |
3914 bool JSObject::HasFastDoubleElements() { | |
3915 return GetElementsKind() == FAST_DOUBLE_ELEMENTS; | |
3916 } | |
3917 | |
3918 | |
3796 bool JSObject::HasDictionaryElements() { | 3919 bool JSObject::HasDictionaryElements() { |
3797 return GetElementsKind() == DICTIONARY_ELEMENTS; | 3920 return GetElementsKind() == DICTIONARY_ELEMENTS; |
3798 } | 3921 } |
3799 | 3922 |
3800 | 3923 |
3801 bool JSObject::HasExternalArrayElements() { | 3924 bool JSObject::HasExternalArrayElements() { |
3802 HeapObject* array = elements(); | 3925 HeapObject* array = elements(); |
3803 ASSERT(array != NULL); | 3926 ASSERT(array != NULL); |
3804 return array->IsExternalArray(); | 3927 return array->IsExternalArray(); |
3805 } | 3928 } |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4298 #undef WRITE_INT_FIELD | 4421 #undef WRITE_INT_FIELD |
4299 #undef READ_SHORT_FIELD | 4422 #undef READ_SHORT_FIELD |
4300 #undef WRITE_SHORT_FIELD | 4423 #undef WRITE_SHORT_FIELD |
4301 #undef READ_BYTE_FIELD | 4424 #undef READ_BYTE_FIELD |
4302 #undef WRITE_BYTE_FIELD | 4425 #undef WRITE_BYTE_FIELD |
4303 | 4426 |
4304 | 4427 |
4305 } } // namespace v8::internal | 4428 } } // namespace v8::internal |
4306 | 4429 |
4307 #endif // V8_OBJECTS_INL_H_ | 4430 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |