Index: src/ia32/stub-cache-ia32.cc |
diff --git a/src/ia32/stub-cache-ia32.cc b/src/ia32/stub-cache-ia32.cc |
index 23e2398b34657d6efbd0f25f7a99bd026de21925..dc8c20ea1f8dc0cf402d72bf115cb7f046be3e60 100644 |
--- a/src/ia32/stub-cache-ia32.cc |
+++ b/src/ia32/stub-cache-ia32.cc |
@@ -1737,8 +1737,10 @@ Handle<Code> CallStubCompiler::CompileArrayPushCall( |
// -- esp[(argc + 1) * 4] : receiver |
// ----------------------------------- |
- // If object is not an array, bail out to regular call. |
- if (!object->IsJSArray() || !cell.is_null()) { |
+ // If object is not an array or is observed, bail out to regular call. |
+ if (!object->IsJSArray() || |
+ !cell.is_null() || |
+ Handle<JSArray>::cast(object)->map()->is_observed()) { |
return Handle<Code>::null(); |
} |
@@ -1996,8 +1998,10 @@ Handle<Code> CallStubCompiler::CompileArrayPopCall( |
// -- esp[(argc + 1) * 4] : receiver |
// ----------------------------------- |
- // If object is not an array, bail out to regular call. |
- if (!object->IsJSArray() || !cell.is_null()) { |
+ // If object is not an array or is observed, bail out to regular call. |
+ if (!object->IsJSArray() || |
+ !cell.is_null() || |
+ Handle<JSArray>::cast(object)->map()->is_observed()) { |
return Handle<Code>::null(); |
} |