OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 #include "src/code-stub-assembler.h" | 4 #include "src/code-stub-assembler.h" |
5 #include "src/code-factory.h" | 5 #include "src/code-factory.h" |
6 #include "src/frames-inl.h" | 6 #include "src/frames-inl.h" |
7 #include "src/frames.h" | 7 #include "src/frames.h" |
8 | 8 |
9 namespace v8 { | 9 namespace v8 { |
10 namespace internal { | 10 namespace internal { |
(...skipping 1881 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1892 NameDictionary::kElementsStartIndex) - | 1892 NameDictionary::kElementsStartIndex) - |
1893 kHeapObjectTag)); | 1893 kHeapObjectTag)); |
1894 Node* end_address = IntPtrAdd( | 1894 Node* end_address = IntPtrAdd( |
1895 result_word, | 1895 result_word, |
1896 IntPtrSubFoldConstants(store_size, IntPtrConstant(kHeapObjectTag))); | 1896 IntPtrSubFoldConstants(store_size, IntPtrConstant(kHeapObjectTag))); |
1897 StoreFieldsNoWriteBarrier(start_address, end_address, filler); | 1897 StoreFieldsNoWriteBarrier(start_address, end_address, filler); |
1898 return result; | 1898 return result; |
1899 } | 1899 } |
1900 | 1900 |
1901 Node* CodeStubAssembler::AllocateJSObjectFromMap(Node* map, Node* properties, | 1901 Node* CodeStubAssembler::AllocateJSObjectFromMap(Node* map, Node* properties, |
1902 Node* elements) { | 1902 Node* elements, |
| 1903 AllocationFlags flags) { |
1903 CSA_ASSERT(this, IsMap(map)); | 1904 CSA_ASSERT(this, IsMap(map)); |
1904 Node* size = | 1905 Node* size = |
1905 IntPtrMul(LoadMapInstanceSize(map), IntPtrConstant(kPointerSize)); | 1906 IntPtrMul(LoadMapInstanceSize(map), IntPtrConstant(kPointerSize)); |
1906 CSA_ASSERT(this, IsRegularHeapObjectSize(size)); | 1907 CSA_ASSERT(this, IsRegularHeapObjectSize(size)); |
1907 Node* object = Allocate(size); | 1908 Node* object = Allocate(size, flags); |
1908 StoreMapNoWriteBarrier(object, map); | 1909 StoreMapNoWriteBarrier(object, map); |
1909 InitializeJSObjectFromMap(object, map, size, properties, elements); | 1910 InitializeJSObjectFromMap(object, map, size, properties, elements); |
1910 return object; | 1911 return object; |
1911 } | 1912 } |
1912 | 1913 |
1913 void CodeStubAssembler::InitializeJSObjectFromMap(Node* object, Node* map, | 1914 void CodeStubAssembler::InitializeJSObjectFromMap(Node* object, Node* map, |
1914 Node* size, Node* properties, | 1915 Node* size, Node* properties, |
1915 Node* elements) { | 1916 Node* elements) { |
1916 // This helper assumes that the object is in new-space, as guarded by the | 1917 // This helper assumes that the object is in new-space, as guarded by the |
1917 // check in AllocatedJSObjectFromMap. | 1918 // check in AllocatedJSObjectFromMap. |
(...skipping 6363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8281 Heap::kUndefinedValueRootIndex); | 8282 Heap::kUndefinedValueRootIndex); |
8282 StoreObjectFieldRoot(result, PromiseReactionJobInfo::kDebugNameOffset, | 8283 StoreObjectFieldRoot(result, PromiseReactionJobInfo::kDebugNameOffset, |
8283 Heap::kUndefinedValueRootIndex); | 8284 Heap::kUndefinedValueRootIndex); |
8284 StoreObjectFieldNoWriteBarrier(result, PromiseReactionJobInfo::kContextOffset, | 8285 StoreObjectFieldNoWriteBarrier(result, PromiseReactionJobInfo::kContextOffset, |
8285 context); | 8286 context); |
8286 return result; | 8287 return result; |
8287 } | 8288 } |
8288 | 8289 |
8289 } // namespace internal | 8290 } // namespace internal |
8290 } // namespace v8 | 8291 } // namespace v8 |
OLD | NEW |