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

Side by Side Diff: src/factory.cc

Issue 8820014: Support Smi->Double->HeapObject transitions in constructed Arrays. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review feedback Created 9 years 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/factory.h ('k') | src/ia32/builtins-ia32.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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 908 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 919
920 Handle<JSArray> Factory::NewJSArray(int capacity, 920 Handle<JSArray> Factory::NewJSArray(int capacity,
921 PretenureFlag pretenure) { 921 PretenureFlag pretenure) {
922 Handle<JSObject> obj = NewJSObject(isolate()->array_function(), pretenure); 922 Handle<JSObject> obj = NewJSObject(isolate()->array_function(), pretenure);
923 CALL_HEAP_FUNCTION(isolate(), 923 CALL_HEAP_FUNCTION(isolate(),
924 Handle<JSArray>::cast(obj)->Initialize(capacity), 924 Handle<JSArray>::cast(obj)->Initialize(capacity),
925 JSArray); 925 JSArray);
926 } 926 }
927 927
928 928
929 Handle<JSArray> Factory::NewJSArrayWithElements(Handle<FixedArray> elements, 929 Handle<JSArray> Factory::NewJSArrayWithElements(Handle<FixedArrayBase> elements,
930 PretenureFlag pretenure) { 930 PretenureFlag pretenure) {
931 Handle<JSArray> result = 931 Handle<JSArray> result =
932 Handle<JSArray>::cast(NewJSObject(isolate()->array_function(), 932 Handle<JSArray>::cast(NewJSObject(isolate()->array_function(),
933 pretenure)); 933 pretenure));
934 result->set_length(Smi::FromInt(0));
934 SetContent(result, elements); 935 SetContent(result, elements);
935 return result; 936 return result;
936 } 937 }
937 938
938 939
940 void Factory::SetElementsCapacityAndLength(Handle<JSArray> array,
941 int capacity,
942 int length) {
943 ElementsAccessor* accessor = array->GetElementsAccessor();
944 CALL_HEAP_FUNCTION_VOID(
945 isolate(),
946 accessor->SetCapacityAndLength(*array, capacity, length));
947 }
948
949
939 void Factory::SetContent(Handle<JSArray> array, 950 void Factory::SetContent(Handle<JSArray> array,
940 Handle<FixedArray> elements) { 951 Handle<FixedArrayBase> elements) {
941 CALL_HEAP_FUNCTION_VOID( 952 CALL_HEAP_FUNCTION_VOID(
942 isolate(), 953 isolate(),
943 array->SetContent(*elements)); 954 array->SetContent(*elements));
944 } 955 }
945 956
946 957
947 void Factory::EnsureCanContainNonSmiElements(Handle<JSArray> array) { 958 void Factory::EnsureCanContainHeapObjectElements(Handle<JSArray> array) {
948 CALL_HEAP_FUNCTION_VOID( 959 CALL_HEAP_FUNCTION_VOID(
949 isolate(), 960 isolate(),
950 array->EnsureCanContainNonSmiElements()); 961 array->EnsureCanContainHeapObjectElements());
951 } 962 }
952 963
953 964
965 void Factory::EnsureCanContainElements(Handle<JSArray> array,
966 Handle<FixedArrayBase> elements,
967 EnsureElementsMode mode) {
968 CALL_HEAP_FUNCTION_VOID(
969 isolate(),
970 array->EnsureCanContainElements(*elements, mode));
971 }
972
973
954 Handle<JSProxy> Factory::NewJSProxy(Handle<Object> handler, 974 Handle<JSProxy> Factory::NewJSProxy(Handle<Object> handler,
955 Handle<Object> prototype) { 975 Handle<Object> prototype) {
956 CALL_HEAP_FUNCTION( 976 CALL_HEAP_FUNCTION(
957 isolate(), 977 isolate(),
958 isolate()->heap()->AllocateJSProxy(*handler, *prototype), 978 isolate()->heap()->AllocateJSProxy(*handler, *prototype),
959 JSProxy); 979 JSProxy);
960 } 980 }
961 981
962 982
963 void Factory::BecomeJSObject(Handle<JSReceiver> object) { 983 void Factory::BecomeJSObject(Handle<JSReceiver> object) {
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
1361 1381
1362 1382
1363 Handle<Object> Factory::ToBoolean(bool value) { 1383 Handle<Object> Factory::ToBoolean(bool value) {
1364 return Handle<Object>(value 1384 return Handle<Object>(value
1365 ? isolate()->heap()->true_value() 1385 ? isolate()->heap()->true_value()
1366 : isolate()->heap()->false_value()); 1386 : isolate()->heap()->false_value());
1367 } 1387 }
1368 1388
1369 1389
1370 } } // namespace v8::internal 1390 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/factory.h ('k') | src/ia32/builtins-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698