Reviewers: danno,
Message:
PTAL
Description:
Flag rewriting an IC while writing to a global constant property as a
failure
caused by the constant property turning mutable.
Please review this at https://chromiumcodereview.appspot.com/19006002/
SVN Base: https://v8.googlecode.com/svn/branches/bleeding_edge
Affected files:
M src/ic.cc
Index: src/ic.cc
diff --git a/src/ic.cc b/src/ic.cc
index
c3ed767d9f6cd7581beb4537e05c8cc770c7c353..9625d2123eda7ebfea1a1c52ce6a320a06b6cdb3
100644
--- a/src/ic.cc
+++ b/src/ic.cc
@@ -191,6 +191,17 @@ static bool
TryRemoveInvalidPrototypeDependentStub(Code* target,
if (Name::cast(name) != stub_name) return false;
}
+ if (receiver->IsGlobalObject()) {
+ if (!name->IsName()) return false;
+ Isolate* isolate = target->GetIsolate();
+ LookupResult lookup(isolate);
+ GlobalObject* global = GlobalObject::cast(receiver);
+ global->LocalLookupRealNamedProperty(Name::cast(name), &lookup);
+ if (!lookup.IsFound()) return false;
+ PropertyCell* cell = global->GetPropertyCell(&lookup);
+ return cell->type()->IsConstant();
+ }
+
InlineCacheHolderFlag cache_holder =
Code::ExtractCacheHolderFromFlags(target->flags());
--
--
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.