diff options
author | isaacs <i@izs.me> | 2012-03-28 19:51:38 -0700 |
---|---|---|
committer | isaacs <i@izs.me> | 2012-03-28 19:51:38 -0700 |
commit | 4b64542fe09477fc5c70e974eb1a78cdce755eb7 (patch) | |
tree | b4d4cdfd5b07efbdae51098b422fde7844ff4715 /deps/v8/src/ic.cc | |
parent | 8a15147bc53849417f8737dd873877d497867c9f (diff) | |
download | node-new-4b64542fe09477fc5c70e974eb1a78cdce755eb7.tar.gz |
Upgrade V8 to 3.9.24.6
Diffstat (limited to 'deps/v8/src/ic.cc')
-rw-r--r-- | deps/v8/src/ic.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/deps/v8/src/ic.cc b/deps/v8/src/ic.cc index c2ee45ec1e..c7621277db 100644 --- a/deps/v8/src/ic.cc +++ b/deps/v8/src/ic.cc @@ -1017,6 +1017,15 @@ void LoadIC::UpdateCaches(LookupResult* lookup, state == MONOMORPHIC_PROTOTYPE_FAILURE) { set_target(*code); } else if (state == MONOMORPHIC) { + // We are transitioning from monomorphic to megamorphic case. + // Place the current monomorphic stub and stub compiled for + // the receiver into stub cache. + Map* map = target()->FindFirstMap(); + if (map != NULL) { + isolate()->stub_cache()->Set(*name, map, target()); + } + isolate()->stub_cache()->Set(*name, receiver->map(), *code); + set_target(*megamorphic_stub()); } else if (state == MEGAMORPHIC) { // Cache code holding map should be consistent with @@ -1365,7 +1374,7 @@ MaybeObject* StoreIC::Store(State state, // Strict mode doesn't allow setting non-existent global property // or an assignment to a read only property. if (strict_mode == kStrictMode) { - if (lookup.IsFound() && lookup.IsReadOnly()) { + if (lookup.IsProperty() && lookup.IsReadOnly()) { return TypeError("strict_read_only_property", object, name); } else if (IsContextual(object)) { return ReferenceError("not_defined", name); |