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

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

Issue 19678023: ES6: Implement WeakSet (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Reitveld is acting up Created 7 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 | Annotate | Revision Log
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 549 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 2503 matching lines...) Expand 10 before | Expand all | Expand 10 after
5085 void JSProxy::InitializeBody(int object_size, Object* value) { 5094 void JSProxy::InitializeBody(int object_size, Object* value) {
5086 ASSERT(!value->IsHeapObject() || !GetHeap()->InNewSpace(value)); 5095 ASSERT(!value->IsHeapObject() || !GetHeap()->InNewSpace(value));
5087 for (int offset = kHeaderSize; offset < object_size; offset += kPointerSize) { 5096 for (int offset = kHeaderSize; offset < object_size; offset += kPointerSize) {
5088 WRITE_FIELD(this, offset, value); 5097 WRITE_FIELD(this, offset, value);
5089 } 5098 }
5090 } 5099 }
5091 5100
5092 5101
5093 ACCESSORS(JSSet, table, Object, kTableOffset) 5102 ACCESSORS(JSSet, table, Object, kTableOffset)
5094 ACCESSORS(JSMap, table, Object, kTableOffset) 5103 ACCESSORS(JSMap, table, Object, kTableOffset)
5095 ACCESSORS(JSWeakMap, table, Object, kTableOffset) 5104 ACCESSORS(JSWeakCollection, table, Object, kTableOffset)
5096 ACCESSORS(JSWeakMap, next, Object, kNextOffset) 5105 ACCESSORS(JSWeakCollection, next, Object, kNextOffset)
5097 5106
5098 5107
5099 Address Foreign::foreign_address() { 5108 Address Foreign::foreign_address() {
5100 return AddressFrom<Address>(READ_INTPTR_FIELD(this, kForeignAddressOffset)); 5109 return AddressFrom<Address>(READ_INTPTR_FIELD(this, kForeignAddressOffset));
5101 } 5110 }
5102 5111
5103 5112
5104 void Foreign::set_foreign_address(Address value) { 5113 void Foreign::set_foreign_address(Address value) {
5105 WRITE_INTPTR_FIELD(this, kForeignAddressOffset, OffsetFrom(value)); 5114 WRITE_INTPTR_FIELD(this, kForeignAddressOffset, OffsetFrom(value));
5106 } 5115 }
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after
6185 #undef WRITE_UINT32_FIELD 6194 #undef WRITE_UINT32_FIELD
6186 #undef READ_SHORT_FIELD 6195 #undef READ_SHORT_FIELD
6187 #undef WRITE_SHORT_FIELD 6196 #undef WRITE_SHORT_FIELD
6188 #undef READ_BYTE_FIELD 6197 #undef READ_BYTE_FIELD
6189 #undef WRITE_BYTE_FIELD 6198 #undef WRITE_BYTE_FIELD
6190 6199
6191 6200
6192 } } // namespace v8::internal 6201 } } // namespace v8::internal
6193 6202
6194 #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') | src/objects-printer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698