Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(300)

Unified Diff: src/stub-cache.cc

Issue 6576024: (early draft) Strict mode - throw exception on assignment to read only property. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/stub-cache.cc
diff --git a/src/stub-cache.cc b/src/stub-cache.cc
index abb26d6ed423a6c231ae288baa37fa18bc498a86..92edc33760d0af92769631c48ba948ecfc6deebd 100644
--- a/src/stub-cache.cc
+++ b/src/stub-cache.cc
@@ -598,11 +598,14 @@ ExternalArrayType ElementsKindToExternalArrayType(JSObject::ElementsKind kind) {
MaybeObject* StubCache::ComputeKeyedLoadOrStoreExternalArray(
JSObject* receiver,
- bool is_store) {
+ bool is_store,
+ Code::ExtraICState extra_ic_state) {
+ ASSERT(extra_ic_state == kNonStrictMode || extra_ic_state == kStrictMode);
Code::Flags flags =
Code::ComputeMonomorphicFlags(
is_store ? Code::KEYED_STORE_IC : Code::KEYED_LOAD_IC,
- NORMAL);
+ NORMAL,
+ extra_ic_state);
ExternalArrayType array_type =
ElementsKindToExternalArrayType(receiver->GetElementsKind());
String* name =
@@ -615,9 +618,9 @@ MaybeObject* StubCache::ComputeKeyedLoadOrStoreExternalArray(
Object* code = map->FindInCodeCache(name, flags);
if (code->IsUndefined()) {
ExternalArrayStubCompiler compiler;
- { MaybeObject* maybe_code =
- is_store ? compiler.CompileKeyedStoreStub(array_type, flags) :
- compiler.CompileKeyedLoadStub(array_type, flags);
+ { MaybeObject* maybe_code = is_store
+ ? compiler.CompileKeyedStoreStub(array_type, flags)
+ : compiler.CompileKeyedLoadStub(array_type, flags);
if (!maybe_code->ToObject(&code)) return maybe_code;
}
if (is_store) {
@@ -638,7 +641,7 @@ MaybeObject* StubCache::ComputeKeyedLoadOrStoreExternalArray(
MaybeObject* StubCache::ComputeStoreNormal(Code::ExtraICState extra_ic_state) {
- return Builtins::builtin(extra_ic_state == StoreIC::kStoreICStrict
+ return Builtins::builtin(extra_ic_state == kStrictMode
? Builtins::StoreIC_Normal_Strict
: Builtins::StoreIC_Normal);
}
@@ -1422,7 +1425,8 @@ MaybeObject* StoreInterceptorProperty(Arguments args) {
Object* value = args[2];
ASSERT(recv->HasNamedInterceptor());
PropertyAttributes attr = NONE;
- MaybeObject* result = recv->SetPropertyWithInterceptor(name, value, attr);
+ MaybeObject* result = recv->SetPropertyWithInterceptor(
Martin Maly 2011/02/24 06:33:34 This needs to be figured out whether we need to pa
Lasse Reichstein 2011/02/24 12:37:54 I'm guessing "yes" too.
+ name, value, attr, kNonStrictMode); // TODL(mmaly): Is this OK?
return result;
}

Powered by Google App Engine
This is Rietveld 408576698