OLD | NEW |
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 1656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1667 bool record_slots) { | 1667 bool record_slots) { |
1668 Object* head = | 1668 Object* head = |
1669 VisitWeakList<Context>( | 1669 VisitWeakList<Context>( |
1670 this, native_contexts_list(), retainer, record_slots); | 1670 this, native_contexts_list(), retainer, record_slots); |
1671 // Update the head of the list of contexts. | 1671 // Update the head of the list of contexts. |
1672 native_contexts_list_ = head; | 1672 native_contexts_list_ = head; |
1673 } | 1673 } |
1674 | 1674 |
1675 | 1675 |
1676 template<> | 1676 template<> |
1677 struct WeakListVisitor<JSTypedArray> { | 1677 struct WeakListVisitor<JSArrayBufferView> { |
1678 static void SetWeakNext(JSTypedArray* obj, Object* next) { | 1678 static void SetWeakNext(JSArrayBufferView* obj, Object* next) { |
1679 obj->set_weak_next(next); | 1679 obj->set_weak_next(next); |
1680 } | 1680 } |
1681 | 1681 |
1682 static Object* WeakNext(JSTypedArray* obj) { | 1682 static Object* WeakNext(JSArrayBufferView* obj) { |
1683 return obj->weak_next(); | 1683 return obj->weak_next(); |
1684 } | 1684 } |
1685 | 1685 |
1686 static void VisitLiveObject(Heap*, | 1686 static void VisitLiveObject(Heap*, |
1687 JSTypedArray* obj, | 1687 JSArrayBufferView* obj, |
1688 WeakObjectRetainer* retainer, | 1688 WeakObjectRetainer* retainer, |
1689 bool record_slots) {} | 1689 bool record_slots) {} |
1690 | 1690 |
1691 static void VisitPhantomObject(Heap*, JSTypedArray*) {} | 1691 static void VisitPhantomObject(Heap*, JSArrayBufferView*) {} |
1692 | 1692 |
1693 static int WeakNextOffset() { | 1693 static int WeakNextOffset() { |
1694 return JSTypedArray::kWeakNextOffset; | 1694 return JSArrayBufferView::kWeakNextOffset; |
1695 } | 1695 } |
1696 }; | 1696 }; |
1697 | 1697 |
1698 | 1698 |
1699 template<> | 1699 template<> |
1700 struct WeakListVisitor<JSArrayBuffer> { | 1700 struct WeakListVisitor<JSArrayBuffer> { |
1701 static void SetWeakNext(JSArrayBuffer* obj, Object* next) { | 1701 static void SetWeakNext(JSArrayBuffer* obj, Object* next) { |
1702 obj->set_weak_next(next); | 1702 obj->set_weak_next(next); |
1703 } | 1703 } |
1704 | 1704 |
1705 static Object* WeakNext(JSArrayBuffer* obj) { | 1705 static Object* WeakNext(JSArrayBuffer* obj) { |
1706 return obj->weak_next(); | 1706 return obj->weak_next(); |
1707 } | 1707 } |
1708 | 1708 |
1709 static void VisitLiveObject(Heap* heap, | 1709 static void VisitLiveObject(Heap* heap, |
1710 JSArrayBuffer* array_buffer, | 1710 JSArrayBuffer* array_buffer, |
1711 WeakObjectRetainer* retainer, | 1711 WeakObjectRetainer* retainer, |
1712 bool record_slots) { | 1712 bool record_slots) { |
1713 Object* typed_array_obj = | 1713 Object* typed_array_obj = |
1714 VisitWeakList<JSTypedArray>( | 1714 VisitWeakList<JSArrayBufferView>( |
1715 heap, | 1715 heap, |
1716 array_buffer->weak_first_array(), | 1716 array_buffer->weak_first_view(), |
1717 retainer, record_slots); | 1717 retainer, record_slots); |
1718 array_buffer->set_weak_first_array(typed_array_obj); | 1718 array_buffer->set_weak_first_view(typed_array_obj); |
1719 if (typed_array_obj != heap->undefined_value() && record_slots) { | 1719 if (typed_array_obj != heap->undefined_value() && record_slots) { |
1720 Object** slot = HeapObject::RawField( | 1720 Object** slot = HeapObject::RawField( |
1721 array_buffer, JSArrayBuffer::kWeakFirstArrayOffset); | 1721 array_buffer, JSArrayBuffer::kWeakFirstViewOffset); |
1722 heap->mark_compact_collector()->RecordSlot(slot, slot, typed_array_obj); | 1722 heap->mark_compact_collector()->RecordSlot(slot, slot, typed_array_obj); |
1723 } | 1723 } |
1724 } | 1724 } |
1725 | 1725 |
1726 static void VisitPhantomObject(Heap* heap, JSArrayBuffer* phantom) { | 1726 static void VisitPhantomObject(Heap* heap, JSArrayBuffer* phantom) { |
1727 Runtime::FreeArrayBuffer(heap->isolate(), phantom); | 1727 Runtime::FreeArrayBuffer(heap->isolate(), phantom); |
1728 } | 1728 } |
1729 | 1729 |
1730 static int WeakNextOffset() { | 1730 static int WeakNextOffset() { |
1731 return JSArrayBuffer::kWeakNextOffset; | 1731 return JSArrayBuffer::kWeakNextOffset; |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1930 Visit); | 1930 Visit); |
1931 | 1931 |
1932 table_.Register(kVisitJSArrayBuffer, | 1932 table_.Register(kVisitJSArrayBuffer, |
1933 &ObjectEvacuationStrategy<POINTER_OBJECT>:: | 1933 &ObjectEvacuationStrategy<POINTER_OBJECT>:: |
1934 Visit); | 1934 Visit); |
1935 | 1935 |
1936 table_.Register(kVisitJSTypedArray, | 1936 table_.Register(kVisitJSTypedArray, |
1937 &ObjectEvacuationStrategy<POINTER_OBJECT>:: | 1937 &ObjectEvacuationStrategy<POINTER_OBJECT>:: |
1938 Visit); | 1938 Visit); |
1939 | 1939 |
| 1940 table_.Register(kVisitJSDataView, |
| 1941 &ObjectEvacuationStrategy<POINTER_OBJECT>:: |
| 1942 Visit); |
| 1943 |
1940 table_.Register(kVisitJSRegExp, | 1944 table_.Register(kVisitJSRegExp, |
1941 &ObjectEvacuationStrategy<POINTER_OBJECT>:: | 1945 &ObjectEvacuationStrategy<POINTER_OBJECT>:: |
1942 Visit); | 1946 Visit); |
1943 | 1947 |
1944 if (marks_handling == IGNORE_MARKS) { | 1948 if (marks_handling == IGNORE_MARKS) { |
1945 table_.Register(kVisitJSFunction, | 1949 table_.Register(kVisitJSFunction, |
1946 &ObjectEvacuationStrategy<POINTER_OBJECT>:: | 1950 &ObjectEvacuationStrategy<POINTER_OBJECT>:: |
1947 template VisitSpecialized<JSFunction::kSize>); | 1951 template VisitSpecialized<JSFunction::kSize>); |
1948 } else { | 1952 } else { |
1949 table_.Register(kVisitJSFunction, &EvacuateJSFunction); | 1953 table_.Register(kVisitJSFunction, &EvacuateJSFunction); |
(...skipping 6158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8108 if (FLAG_parallel_recompilation) { | 8112 if (FLAG_parallel_recompilation) { |
8109 heap_->relocation_mutex_->Lock(); | 8113 heap_->relocation_mutex_->Lock(); |
8110 #ifdef DEBUG | 8114 #ifdef DEBUG |
8111 heap_->relocation_mutex_locked_by_optimizer_thread_ = | 8115 heap_->relocation_mutex_locked_by_optimizer_thread_ = |
8112 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); | 8116 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); |
8113 #endif // DEBUG | 8117 #endif // DEBUG |
8114 } | 8118 } |
8115 } | 8119 } |
8116 | 8120 |
8117 } } // namespace v8::internal | 8121 } } // namespace v8::internal |
OLD | NEW |