Revert "Revert "Upgrade to 5.0.71.48"" DO NOT MERGE
This reverts commit f2e3994fa5148cc3d9946666f0b0596290192b0e,
and updates the x64 makefile properly so it doesn't break that
build.
FPIIM-449
Change-Id: Ib83e35bfbae6af627451c926a9650ec57c045605
(cherry picked from commit 109988c7ccb6f3fd1a58574fa3dfb88beaef6632)
diff --git a/src/runtime/runtime-array.cc b/src/runtime/runtime-array.cc
index 28e92cb..f651ed4 100644
--- a/src/runtime/runtime-array.cc
+++ b/src/runtime/runtime-array.cc
@@ -120,9 +120,11 @@
RUNTIME_FUNCTION(Runtime_RemoveArrayHoles) {
HandleScope scope(isolate);
DCHECK(args.length() == 2);
- CONVERT_ARG_HANDLE_CHECKED(JSObject, object, 0);
+ CONVERT_ARG_HANDLE_CHECKED(JSReceiver, object, 0);
CONVERT_NUMBER_CHECKED(uint32_t, limit, Uint32, args[1]);
- return *JSObject::PrepareElementsForSort(object, limit);
+ if (object->IsJSProxy()) return Smi::FromInt(-1);
+ return *JSObject::PrepareElementsForSort(Handle<JSObject>::cast(object),
+ limit);
}
@@ -199,6 +201,15 @@
CONVERT_ARG_HANDLE_CHECKED(JSObject, array, 0);
CONVERT_NUMBER_CHECKED(uint32_t, length, Uint32, args[1]);
+ if (array->HasFastStringWrapperElements()) {
+ int string_length =
+ String::cast(Handle<JSValue>::cast(array)->value())->length();
+ int backing_store_length = array->elements()->length();
+ return *isolate->factory()->NewNumberFromUint(
+ Min(length,
+ static_cast<uint32_t>(Max(string_length, backing_store_length))));
+ }
+
if (!array->elements()->IsDictionary()) {
RUNTIME_ASSERT(array->HasFastSmiOrObjectElements() ||
array->HasFastDoubleElements());
@@ -206,8 +217,8 @@
return *isolate->factory()->NewNumberFromUint(Min(actual_length, length));
}
- KeyAccumulator accumulator(isolate, ALL_PROPERTIES);
- // No need to separate protoype levels since we only get numbers/element keys
+ KeyAccumulator accumulator(isolate, OWN_ONLY, ALL_PROPERTIES);
+ // No need to separate prototype levels since we only get element keys.
for (PrototypeIterator iter(isolate, array,
PrototypeIterator::START_AT_RECEIVER);
!iter.IsAtEnd(); iter.Advance()) {
@@ -480,15 +491,6 @@
}
-RUNTIME_FUNCTION(Runtime_FastOneByteArrayJoin) {
- SealHandleScope shs(isolate);
- DCHECK(args.length() == 2);
- // Returning undefined means that this fast path fails and one has to resort
- // to a slow path.
- return isolate->heap()->undefined_value();
-}
-
-
RUNTIME_FUNCTION(Runtime_ArraySpeciesConstructor) {
HandleScope scope(isolate);
DCHECK(args.length() == 1);