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

Side by Side Diff: src/factory.cc

Issue 1144393003: Also allocate small typed arrays on heap when initialized from an array-like (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 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
« no previous file with comments | « src/factory.h ('k') | src/heap/heap.h » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 4
5 #include "src/factory.h" 5 #include "src/factory.h"
6 6
7 #include "src/allocation-site-scopes.h" 7 #include "src/allocation-site-scopes.h"
8 #include "src/base/bits.h" 8 #include "src/base/bits.h"
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/conversions.h" 10 #include "src/conversions.h"
(...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 isolate(), 910 isolate(),
911 isolate()->heap()->AllocateExternalArray(length, 911 isolate()->heap()->AllocateExternalArray(length,
912 array_type, 912 array_type,
913 external_pointer, 913 external_pointer,
914 pretenure), 914 pretenure),
915 ExternalArray); 915 ExternalArray);
916 } 916 }
917 917
918 918
919 Handle<FixedTypedArrayBase> Factory::NewFixedTypedArray( 919 Handle<FixedTypedArrayBase> Factory::NewFixedTypedArray(
920 int length, 920 int length, ExternalArrayType array_type, bool initialize,
921 ExternalArrayType array_type,
922 PretenureFlag pretenure) { 921 PretenureFlag pretenure) {
923 DCHECK(0 <= length && length <= Smi::kMaxValue); 922 DCHECK(0 <= length && length <= Smi::kMaxValue);
924 CALL_HEAP_FUNCTION( 923 CALL_HEAP_FUNCTION(isolate(), isolate()->heap()->AllocateFixedTypedArray(
925 isolate(), 924 length, array_type, initialize, pretenure),
926 isolate()->heap()->AllocateFixedTypedArray(length, 925 FixedTypedArrayBase);
927 array_type,
928 pretenure),
929 FixedTypedArrayBase);
930 } 926 }
931 927
932 928
933 Handle<Cell> Factory::NewCell(Handle<Object> value) { 929 Handle<Cell> Factory::NewCell(Handle<Object> value) {
934 AllowDeferredHandleDereference convert_to_cell; 930 AllowDeferredHandleDereference convert_to_cell;
935 CALL_HEAP_FUNCTION( 931 CALL_HEAP_FUNCTION(
936 isolate(), 932 isolate(),
937 isolate()->heap()->AllocateCell(*value), 933 isolate()->heap()->AllocateCell(*value),
938 Cell); 934 Cell);
939 } 935 }
(...skipping 1015 matching lines...) Expand 10 before | Expand all | Expand 10 after
1955 obj->set_byte_length(*byte_length_object); 1951 obj->set_byte_length(*byte_length_object);
1956 Handle<Object> length_object = NewNumberFromSize(number_of_elements); 1952 Handle<Object> length_object = NewNumberFromSize(number_of_elements);
1957 obj->set_length(*length_object); 1953 obj->set_length(*length_object);
1958 1954
1959 Handle<JSArrayBuffer> buffer = isolate()->factory()->NewJSArrayBuffer(); 1955 Handle<JSArrayBuffer> buffer = isolate()->factory()->NewJSArrayBuffer();
1960 Runtime::SetupArrayBuffer(isolate(), buffer, true, NULL, byte_length, 1956 Runtime::SetupArrayBuffer(isolate(), buffer, true, NULL, byte_length,
1961 SharedFlag::kNotShared); 1957 SharedFlag::kNotShared);
1962 obj->set_buffer(*buffer); 1958 obj->set_buffer(*buffer);
1963 Handle<FixedTypedArrayBase> elements = 1959 Handle<FixedTypedArrayBase> elements =
1964 isolate()->factory()->NewFixedTypedArray( 1960 isolate()->factory()->NewFixedTypedArray(
1965 static_cast<int>(number_of_elements), array_type); 1961 static_cast<int>(number_of_elements), array_type, true);
1966 obj->set_elements(*elements); 1962 obj->set_elements(*elements);
1967 return obj; 1963 return obj;
1968 } 1964 }
1969 1965
1970 1966
1971 Handle<JSDataView> Factory::NewJSDataView(Handle<JSArrayBuffer> buffer, 1967 Handle<JSDataView> Factory::NewJSDataView(Handle<JSArrayBuffer> buffer,
1972 size_t byte_offset, 1968 size_t byte_offset,
1973 size_t byte_length) { 1969 size_t byte_length) {
1974 Handle<JSDataView> obj = NewJSDataView(); 1970 Handle<JSDataView> obj = NewJSDataView();
1975 SetupArrayBufferView(isolate(), obj, buffer, byte_offset, byte_length); 1971 SetupArrayBufferView(isolate(), obj, buffer, byte_offset, byte_length);
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
2464 return Handle<Object>::null(); 2460 return Handle<Object>::null();
2465 } 2461 }
2466 2462
2467 2463
2468 Handle<Object> Factory::ToBoolean(bool value) { 2464 Handle<Object> Factory::ToBoolean(bool value) {
2469 return value ? true_value() : false_value(); 2465 return value ? true_value() : false_value();
2470 } 2466 }
2471 2467
2472 2468
2473 } } // namespace v8::internal 2469 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/factory.h ('k') | src/heap/heap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698