Revision: 13612
Author: [email protected]
Date: Wed Feb 6 09:35:35 2013
Log: Use asserts instead of branches to avoid fast array methods for
observed arrays
Because observed arrays should always be in dictionary mode, we'll always
fall
back to the JS version anyway.
Review URL: https://codereview.chromium.org/12221033
http://code.google.com/p/v8/source/detail?r=13612
Modified:
/branches/bleeding_edge/src/builtins.cc
=======================================
--- /branches/bleeding_edge/src/builtins.cc Fri Jan 25 03:55:29 2013
+++ /branches/bleeding_edge/src/builtins.cc Wed Feb 6 09:35:35 2013
@@ -525,12 +525,9 @@
}
if (!maybe_elms_obj->To(&elms_obj)) return maybe_elms_obj;
- if (FLAG_harmony_observation &&
- JSObject::cast(receiver)->map()->is_observed()) {
- return CallJsBuiltin(isolate, "ArrayPush", args);
- }
+ JSArray* array = JSArray::cast(receiver);
+ ASSERT(!array->map()->is_observed());
- JSArray* array = JSArray::cast(receiver);
ElementsKind kind = array->GetElementsKind();
if (IsFastSmiOrObjectElementsKind(kind)) {
@@ -642,10 +639,7 @@
if (!maybe_elms->To(&elms_obj)) return maybe_elms;
JSArray* array = JSArray::cast(receiver);
-
- if (FLAG_harmony_observation && array->map()->is_observed()) {
- return CallJsBuiltin(isolate, "ArrayPop", args);
- }
+ ASSERT(!array->map()->is_observed());
int len = Smi::cast(array->length())->value();
if (len == 0) return heap->undefined_value();
@@ -680,10 +674,7 @@
return CallJsBuiltin(isolate, "ArrayShift", args);
}
JSArray* array = JSArray::cast(receiver);
-
- if (FLAG_harmony_observation && array->map()->is_observed()) {
- return CallJsBuiltin(isolate, "ArrayShift", args);
- }
+ ASSERT(!array->map()->is_observed());
int len = Smi::cast(array->length())->value();
if (len == 0) return heap->undefined_value();
@@ -734,15 +725,12 @@
return CallJsBuiltin(isolate, "ArrayUnshift", args);
}
JSArray* array = JSArray::cast(receiver);
+ ASSERT(!array->map()->is_observed());
if (!array->HasFastSmiOrObjectElements()) {
return CallJsBuiltin(isolate, "ArrayUnshift", args);
}
FixedArray* elms = FixedArray::cast(elms_obj);
- if (FLAG_harmony_observation && array->map()->is_observed()) {
- return CallJsBuiltin(isolate, "ArrayUnshift", args);
- }
-
int len = Smi::cast(array->length())->value();
int to_add = args.length() - 1;
int new_length = len + to_add;
@@ -938,10 +926,7 @@
return CallJsBuiltin(isolate, "ArraySplice", args);
}
JSArray* array = JSArray::cast(receiver);
-
- if (FLAG_harmony_observation && array->map()->is_observed()) {
- return CallJsBuiltin(isolate, "ArraySplice", args);
- }
+ ASSERT(!array->map()->is_observed());
int len = Smi::cast(array->length())->value();
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.