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

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

Issue 139973004: A64: Synchronize with r15814. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/a64
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
« 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 // 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 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
214 bool Object::IsSpecFunction() { 214 bool Object::IsSpecFunction() {
215 if (!Object::IsHeapObject()) return false; 215 if (!Object::IsHeapObject()) return false;
216 InstanceType type = HeapObject::cast(this)->map()->instance_type(); 216 InstanceType type = HeapObject::cast(this)->map()->instance_type();
217 return type == JS_FUNCTION_TYPE || type == JS_FUNCTION_PROXY_TYPE; 217 return type == JS_FUNCTION_TYPE || type == JS_FUNCTION_PROXY_TYPE;
218 } 218 }
219 219
220 220
221 bool Object::IsInternalizedString() { 221 bool Object::IsInternalizedString() {
222 if (!this->IsHeapObject()) return false; 222 if (!this->IsHeapObject()) return false;
223 uint32_t type = HeapObject::cast(this)->map()->instance_type(); 223 uint32_t type = HeapObject::cast(this)->map()->instance_type();
224 STATIC_ASSERT(kInternalizedTag != 0); 224 STATIC_ASSERT(kNotInternalizedTag != 0);
225 return (type & (kIsNotStringMask | kIsInternalizedMask)) == 225 return (type & (kIsNotStringMask | kIsNotInternalizedMask)) ==
226 (kInternalizedTag | kStringTag); 226 (kStringTag | kInternalizedTag);
227 } 227 }
228 228
229 229
230 bool Object::IsConsString() { 230 bool Object::IsConsString() {
231 if (!IsString()) return false; 231 if (!IsString()) return false;
232 return StringShape(String::cast(this)).IsCons(); 232 return StringShape(String::cast(this)).IsCons();
233 } 233 }
234 234
235 235
236 bool Object::IsSlicedString() { 236 bool Object::IsSlicedString() {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 312
313 StringShape::StringShape(InstanceType t) 313 StringShape::StringShape(InstanceType t)
314 : type_(static_cast<uint32_t>(t)) { 314 : type_(static_cast<uint32_t>(t)) {
315 set_valid(); 315 set_valid();
316 ASSERT((type_ & kIsNotStringMask) == kStringTag); 316 ASSERT((type_ & kIsNotStringMask) == kStringTag);
317 } 317 }
318 318
319 319
320 bool StringShape::IsInternalized() { 320 bool StringShape::IsInternalized() {
321 ASSERT(valid()); 321 ASSERT(valid());
322 STATIC_ASSERT(kInternalizedTag != 0); 322 STATIC_ASSERT(kNotInternalizedTag != 0);
323 return (type_ & (kIsNotStringMask | kIsInternalizedMask)) == 323 return (type_ & (kIsNotStringMask | kIsNotInternalizedMask)) ==
324 (kInternalizedTag | kStringTag); 324 (kStringTag | kInternalizedTag);
325 } 325 }
326 326
327 327
328 bool String::IsOneByteRepresentation() { 328 bool String::IsOneByteRepresentation() {
329 uint32_t type = map()->instance_type(); 329 uint32_t type = map()->instance_type();
330 return (type & kStringEncodingMask) == kOneByteStringTag; 330 return (type & kStringEncodingMask) == kOneByteStringTag;
331 } 331 }
332 332
333 333
334 bool String::IsTwoByteRepresentation() { 334 bool String::IsTwoByteRepresentation() {
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 if (!Object::IsHeapObject()) return false; 560 if (!Object::IsHeapObject()) return false;
561 InstanceType type = HeapObject::cast(this)->map()->instance_type(); 561 InstanceType type = HeapObject::cast(this)->map()->instance_type();
562 return FIRST_JS_PROXY_TYPE <= type && type <= LAST_JS_PROXY_TYPE; 562 return FIRST_JS_PROXY_TYPE <= type && type <= LAST_JS_PROXY_TYPE;
563 } 563 }
564 564
565 565
566 TYPE_CHECKER(JSFunctionProxy, JS_FUNCTION_PROXY_TYPE) 566 TYPE_CHECKER(JSFunctionProxy, JS_FUNCTION_PROXY_TYPE)
567 TYPE_CHECKER(JSSet, JS_SET_TYPE) 567 TYPE_CHECKER(JSSet, JS_SET_TYPE)
568 TYPE_CHECKER(JSMap, JS_MAP_TYPE) 568 TYPE_CHECKER(JSMap, JS_MAP_TYPE)
569 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE) 569 TYPE_CHECKER(JSWeakMap, JS_WEAK_MAP_TYPE)
570 TYPE_CHECKER(JSWeakSet, JS_WEAK_SET_TYPE)
570 TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE) 571 TYPE_CHECKER(JSContextExtensionObject, JS_CONTEXT_EXTENSION_OBJECT_TYPE)
571 TYPE_CHECKER(Map, MAP_TYPE) 572 TYPE_CHECKER(Map, MAP_TYPE)
572 TYPE_CHECKER(FixedArray, FIXED_ARRAY_TYPE) 573 TYPE_CHECKER(FixedArray, FIXED_ARRAY_TYPE)
573 TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE) 574 TYPE_CHECKER(FixedDoubleArray, FIXED_DOUBLE_ARRAY_TYPE)
574 575
575 576
577 bool Object::IsJSWeakCollection() {
578 return IsJSWeakMap() || IsJSWeakSet();
579 }
580
581
576 bool Object::IsDescriptorArray() { 582 bool Object::IsDescriptorArray() {
577 return IsFixedArray(); 583 return IsFixedArray();
578 } 584 }
579 585
580 586
581 bool Object::IsTransitionArray() { 587 bool Object::IsTransitionArray() {
582 return IsFixedArray(); 588 return IsFixedArray();
583 } 589 }
584 590
585 591
(...skipping 1095 matching lines...) Expand 10 before | Expand all | Expand 10 after
1681 case JS_TYPED_ARRAY_TYPE: 1687 case JS_TYPED_ARRAY_TYPE:
1682 return JSTypedArray::kSize; 1688 return JSTypedArray::kSize;
1683 case JS_DATA_VIEW_TYPE: 1689 case JS_DATA_VIEW_TYPE:
1684 return JSDataView::kSize; 1690 return JSDataView::kSize;
1685 case JS_SET_TYPE: 1691 case JS_SET_TYPE:
1686 return JSSet::kSize; 1692 return JSSet::kSize;
1687 case JS_MAP_TYPE: 1693 case JS_MAP_TYPE:
1688 return JSMap::kSize; 1694 return JSMap::kSize;
1689 case JS_WEAK_MAP_TYPE: 1695 case JS_WEAK_MAP_TYPE:
1690 return JSWeakMap::kSize; 1696 return JSWeakMap::kSize;
1697 case JS_WEAK_SET_TYPE:
1698 return JSWeakSet::kSize;
1691 case JS_REGEXP_TYPE: 1699 case JS_REGEXP_TYPE:
1692 return JSRegExp::kSize; 1700 return JSRegExp::kSize;
1693 case JS_CONTEXT_EXTENSION_OBJECT_TYPE: 1701 case JS_CONTEXT_EXTENSION_OBJECT_TYPE:
1694 return JSObject::kHeaderSize; 1702 return JSObject::kHeaderSize;
1695 case JS_MESSAGE_OBJECT_TYPE: 1703 case JS_MESSAGE_OBJECT_TYPE:
1696 return JSMessageObject::kSize; 1704 return JSMessageObject::kSize;
1697 default: 1705 default:
1698 UNREACHABLE(); 1706 UNREACHABLE();
1699 return 0; 1707 return 0;
1700 } 1708 }
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after
2562 CAST_ACCESSOR(JSArrayBuffer) 2570 CAST_ACCESSOR(JSArrayBuffer)
2563 CAST_ACCESSOR(JSArrayBufferView) 2571 CAST_ACCESSOR(JSArrayBufferView)
2564 CAST_ACCESSOR(JSTypedArray) 2572 CAST_ACCESSOR(JSTypedArray)
2565 CAST_ACCESSOR(JSDataView) 2573 CAST_ACCESSOR(JSDataView)
2566 CAST_ACCESSOR(JSRegExp) 2574 CAST_ACCESSOR(JSRegExp)
2567 CAST_ACCESSOR(JSProxy) 2575 CAST_ACCESSOR(JSProxy)
2568 CAST_ACCESSOR(JSFunctionProxy) 2576 CAST_ACCESSOR(JSFunctionProxy)
2569 CAST_ACCESSOR(JSSet) 2577 CAST_ACCESSOR(JSSet)
2570 CAST_ACCESSOR(JSMap) 2578 CAST_ACCESSOR(JSMap)
2571 CAST_ACCESSOR(JSWeakMap) 2579 CAST_ACCESSOR(JSWeakMap)
2580 CAST_ACCESSOR(JSWeakSet)
2572 CAST_ACCESSOR(Foreign) 2581 CAST_ACCESSOR(Foreign)
2573 CAST_ACCESSOR(ByteArray) 2582 CAST_ACCESSOR(ByteArray)
2574 CAST_ACCESSOR(FreeSpace) 2583 CAST_ACCESSOR(FreeSpace)
2575 CAST_ACCESSOR(ExternalArray) 2584 CAST_ACCESSOR(ExternalArray)
2576 CAST_ACCESSOR(ExternalByteArray) 2585 CAST_ACCESSOR(ExternalByteArray)
2577 CAST_ACCESSOR(ExternalUnsignedByteArray) 2586 CAST_ACCESSOR(ExternalUnsignedByteArray)
2578 CAST_ACCESSOR(ExternalShortArray) 2587 CAST_ACCESSOR(ExternalShortArray)
2579 CAST_ACCESSOR(ExternalUnsignedShortArray) 2588 CAST_ACCESSOR(ExternalUnsignedShortArray)
2580 CAST_ACCESSOR(ExternalIntArray) 2589 CAST_ACCESSOR(ExternalIntArray)
2581 CAST_ACCESSOR(ExternalUnsignedIntArray) 2590 CAST_ACCESSOR(ExternalUnsignedIntArray)
(...skipping 1028 matching lines...) Expand 10 before | Expand all | Expand 10 after
3610 void Map::freeze() { 3619 void Map::freeze() {
3611 set_bit_field3(IsFrozen::update(bit_field3(), true)); 3620 set_bit_field3(IsFrozen::update(bit_field3(), true));
3612 } 3621 }
3613 3622
3614 3623
3615 bool Map::is_frozen() { 3624 bool Map::is_frozen() {
3616 return IsFrozen::decode(bit_field3()); 3625 return IsFrozen::decode(bit_field3());
3617 } 3626 }
3618 3627
3619 3628
3629 bool Map::has_code_cache() {
3630 return code_cache() != GetIsolate()->heap()->empty_fixed_array();
3631 }
3632
3633
3620 bool Map::CanBeDeprecated() { 3634 bool Map::CanBeDeprecated() {
3621 int descriptor = LastAdded(); 3635 int descriptor = LastAdded();
3622 for (int i = 0; i <= descriptor; i++) { 3636 for (int i = 0; i <= descriptor; i++) {
3623 PropertyDetails details = instance_descriptors()->GetDetails(i); 3637 PropertyDetails details = instance_descriptors()->GetDetails(i);
3624 if (FLAG_track_fields && details.representation().IsNone()) { 3638 if (FLAG_track_fields && details.representation().IsNone()) {
3625 return true; 3639 return true;
3626 } 3640 }
3627 if (FLAG_track_fields && details.representation().IsSmi()) { 3641 if (FLAG_track_fields && details.representation().IsSmi()) {
3628 return true; 3642 return true;
3629 } 3643 }
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
4443 ACCESSORS(ObjectTemplateInfo, constructor, Object, kConstructorOffset) 4457 ACCESSORS(ObjectTemplateInfo, constructor, Object, kConstructorOffset)
4444 ACCESSORS(ObjectTemplateInfo, internal_field_count, Object, 4458 ACCESSORS(ObjectTemplateInfo, internal_field_count, Object,
4445 kInternalFieldCountOffset) 4459 kInternalFieldCountOffset)
4446 4460
4447 ACCESSORS(SignatureInfo, receiver, Object, kReceiverOffset) 4461 ACCESSORS(SignatureInfo, receiver, Object, kReceiverOffset)
4448 ACCESSORS(SignatureInfo, args, Object, kArgsOffset) 4462 ACCESSORS(SignatureInfo, args, Object, kArgsOffset)
4449 4463
4450 ACCESSORS(TypeSwitchInfo, types, Object, kTypesOffset) 4464 ACCESSORS(TypeSwitchInfo, types, Object, kTypesOffset)
4451 4465
4452 ACCESSORS(AllocationSite, transition_info, Object, kTransitionInfoOffset) 4466 ACCESSORS(AllocationSite, transition_info, Object, kTransitionInfoOffset)
4453 ACCESSORS(AllocationSiteInfo, allocation_site, Object, kAllocationSiteOffset) 4467 ACCESSORS(AllocationSite, weak_next, Object, kWeakNextOffset)
4468 ACCESSORS(AllocationMemento, allocation_site, Object, kAllocationSiteOffset)
4454 4469
4455 ACCESSORS(Script, source, Object, kSourceOffset) 4470 ACCESSORS(Script, source, Object, kSourceOffset)
4456 ACCESSORS(Script, name, Object, kNameOffset) 4471 ACCESSORS(Script, name, Object, kNameOffset)
4457 ACCESSORS(Script, id, Smi, kIdOffset) 4472 ACCESSORS(Script, id, Smi, kIdOffset)
4458 ACCESSORS_TO_SMI(Script, line_offset, kLineOffsetOffset) 4473 ACCESSORS_TO_SMI(Script, line_offset, kLineOffsetOffset)
4459 ACCESSORS_TO_SMI(Script, column_offset, kColumnOffsetOffset) 4474 ACCESSORS_TO_SMI(Script, column_offset, kColumnOffsetOffset)
4460 ACCESSORS(Script, data, Object, kDataOffset) 4475 ACCESSORS(Script, data, Object, kDataOffset)
4461 ACCESSORS(Script, context_data, Object, kContextOffset) 4476 ACCESSORS(Script, context_data, Object, kContextOffset)
4462 ACCESSORS(Script, wrapper, Foreign, kWrapperOffset) 4477 ACCESSORS(Script, wrapper, Foreign, kWrapperOffset)
4463 ACCESSORS_TO_SMI(Script, type, kTypeOffset) 4478 ACCESSORS_TO_SMI(Script, type, kTypeOffset)
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
4534 SMI_ACCESSORS(SharedFunctionInfo, num_literals, kNumLiteralsOffset) 4549 SMI_ACCESSORS(SharedFunctionInfo, num_literals, kNumLiteralsOffset)
4535 SMI_ACCESSORS(SharedFunctionInfo, start_position_and_type, 4550 SMI_ACCESSORS(SharedFunctionInfo, start_position_and_type,
4536 kStartPositionAndTypeOffset) 4551 kStartPositionAndTypeOffset)
4537 SMI_ACCESSORS(SharedFunctionInfo, end_position, kEndPositionOffset) 4552 SMI_ACCESSORS(SharedFunctionInfo, end_position, kEndPositionOffset)
4538 SMI_ACCESSORS(SharedFunctionInfo, function_token_position, 4553 SMI_ACCESSORS(SharedFunctionInfo, function_token_position,
4539 kFunctionTokenPositionOffset) 4554 kFunctionTokenPositionOffset)
4540 SMI_ACCESSORS(SharedFunctionInfo, compiler_hints, 4555 SMI_ACCESSORS(SharedFunctionInfo, compiler_hints,
4541 kCompilerHintsOffset) 4556 kCompilerHintsOffset)
4542 SMI_ACCESSORS(SharedFunctionInfo, opt_count, kOptCountOffset) 4557 SMI_ACCESSORS(SharedFunctionInfo, opt_count, kOptCountOffset)
4543 SMI_ACCESSORS(SharedFunctionInfo, counters, kCountersOffset) 4558 SMI_ACCESSORS(SharedFunctionInfo, counters, kCountersOffset)
4544 SMI_ACCESSORS(SharedFunctionInfo, 4559
4545 stress_deopt_counter,
4546 kStressDeoptCounterOffset)
4547 #else 4560 #else
4548 4561
4549 #define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \ 4562 #define PSEUDO_SMI_ACCESSORS_LO(holder, name, offset) \
4550 STATIC_ASSERT(holder::offset % kPointerSize == 0); \ 4563 STATIC_ASSERT(holder::offset % kPointerSize == 0); \
4551 int holder::name() { \ 4564 int holder::name() { \
4552 int value = READ_INT_FIELD(this, offset); \ 4565 int value = READ_INT_FIELD(this, offset); \
4553 ASSERT(kHeapObjectTag == 1); \ 4566 ASSERT(kHeapObjectTag == 1); \
4554 ASSERT((value & kHeapObjectTag) == 0); \ 4567 ASSERT((value & kHeapObjectTag) == 0); \
4555 return value >> 1; \ 4568 return value >> 1; \
4556 } \ 4569 } \
(...skipping 29 matching lines...) Expand all
4586 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, 4599 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo,
4587 function_token_position, 4600 function_token_position,
4588 kFunctionTokenPositionOffset) 4601 kFunctionTokenPositionOffset)
4589 PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, 4602 PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo,
4590 compiler_hints, 4603 compiler_hints,
4591 kCompilerHintsOffset) 4604 kCompilerHintsOffset)
4592 4605
4593 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, opt_count, kOptCountOffset) 4606 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, opt_count, kOptCountOffset)
4594 4607
4595 PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, counters, kCountersOffset) 4608 PSEUDO_SMI_ACCESSORS_HI(SharedFunctionInfo, counters, kCountersOffset)
4596 PSEUDO_SMI_ACCESSORS_LO(SharedFunctionInfo, 4609
4597 stress_deopt_counter,
4598 kStressDeoptCounterOffset)
4599 #endif 4610 #endif
4600 4611
4601 4612
4602 int SharedFunctionInfo::construction_count() { 4613 int SharedFunctionInfo::construction_count() {
4603 return READ_BYTE_FIELD(this, kConstructionCountOffset); 4614 return READ_BYTE_FIELD(this, kConstructionCountOffset);
4604 } 4615 }
4605 4616
4606 4617
4607 void SharedFunctionInfo::set_construction_count(int value) { 4618 void SharedFunctionInfo::set_construction_count(int value) {
4608 ASSERT(0 <= value && value < 256); 4619 ASSERT(0 <= value && value < 256);
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after
5083 void JSProxy::InitializeBody(int object_size, Object* value) { 5094 void JSProxy::InitializeBody(int object_size, Object* value) {
5084 ASSERT(!value->IsHeapObject() || !GetHeap()->InNewSpace(value)); 5095 ASSERT(!value->IsHeapObject() || !GetHeap()->InNewSpace(value));
5085 for (int offset = kHeaderSize; offset < object_size; offset += kPointerSize) { 5096 for (int offset = kHeaderSize; offset < object_size; offset += kPointerSize) {
5086 WRITE_FIELD(this, offset, value); 5097 WRITE_FIELD(this, offset, value);
5087 } 5098 }
5088 } 5099 }
5089 5100
5090 5101
5091 ACCESSORS(JSSet, table, Object, kTableOffset) 5102 ACCESSORS(JSSet, table, Object, kTableOffset)
5092 ACCESSORS(JSMap, table, Object, kTableOffset) 5103 ACCESSORS(JSMap, table, Object, kTableOffset)
5093 ACCESSORS(JSWeakMap, table, Object, kTableOffset) 5104 ACCESSORS(JSWeakCollection, table, Object, kTableOffset)
5094 ACCESSORS(JSWeakMap, next, Object, kNextOffset) 5105 ACCESSORS(JSWeakCollection, next, Object, kNextOffset)
5095 5106
5096 5107
5097 Address Foreign::foreign_address() { 5108 Address Foreign::foreign_address() {
5098 return AddressFrom<Address>(READ_INTPTR_FIELD(this, kForeignAddressOffset)); 5109 return AddressFrom<Address>(READ_INTPTR_FIELD(this, kForeignAddressOffset));
5099 } 5110 }
5100 5111
5101 5112
5102 void Foreign::set_foreign_address(Address value) { 5113 void Foreign::set_foreign_address(Address value) {
5103 WRITE_INTPTR_FIELD(this, kForeignAddressOffset, OffsetFrom(value)); 5114 WRITE_INTPTR_FIELD(this, kForeignAddressOffset, OffsetFrom(value));
5104 } 5115 }
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after
6183 #undef WRITE_UINT32_FIELD 6194 #undef WRITE_UINT32_FIELD
6184 #undef READ_SHORT_FIELD 6195 #undef READ_SHORT_FIELD
6185 #undef WRITE_SHORT_FIELD 6196 #undef WRITE_SHORT_FIELD
6186 #undef READ_BYTE_FIELD 6197 #undef READ_BYTE_FIELD
6187 #undef WRITE_BYTE_FIELD 6198 #undef WRITE_BYTE_FIELD
6188 6199
6189 6200
6190 } } // namespace v8::internal 6201 } } // namespace v8::internal
6191 6202
6192 #endif // V8_OBJECTS_INL_H_ 6203 #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