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

Side by Side Diff: src/isolate.cc

Issue 768633002: Add infrastructure to keep track of references to prototypes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: use WeakCellForMap() when appropriate Created 6 years 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 unified diff | Download patch
« no previous file with comments | « src/isolate.h ('k') | src/lookup.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdlib.h> 5 #include <stdlib.h>
6 6
7 #include <fstream> // NOLINT(readability/streams) 7 #include <fstream> // NOLINT(readability/streams)
8 #include <sstream> 8 #include <sstream>
9 9
10 #include "src/v8.h" 10 #include "src/v8.h"
(...skipping 784 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 795
796 if (Context::cast(receiver_context)->security_token() == 796 if (Context::cast(receiver_context)->security_token() ==
797 native_context->security_token()) 797 native_context->security_token())
798 return YES; 798 return YES;
799 } 799 }
800 800
801 return UNKNOWN; 801 return UNKNOWN;
802 } 802 }
803 803
804 804
805 bool Isolate::IsInternallyUsedPropertyName(Handle<Object> name) {
806 return name.is_identical_to(factory()->hidden_string()) ||
807 name.is_identical_to(factory()->prototype_users_symbol());
808 }
809
810
811 bool Isolate::IsInternallyUsedPropertyName(Object* name) {
812 return name == heap()->hidden_string() ||
813 name == heap()->prototype_users_symbol();
814 }
815
816
805 bool Isolate::MayNamedAccess(Handle<JSObject> receiver, 817 bool Isolate::MayNamedAccess(Handle<JSObject> receiver,
806 Handle<Object> key, 818 Handle<Object> key,
807 v8::AccessType type) { 819 v8::AccessType type) {
808 DCHECK(receiver->IsJSGlobalProxy() || receiver->IsAccessCheckNeeded()); 820 DCHECK(receiver->IsJSGlobalProxy() || receiver->IsAccessCheckNeeded());
809 821
810 // Skip checks for hidden properties access. Note, we do not 822 // Skip checks for internally used properties. Note, we do not
811 // require existence of a context in this case. 823 // require existence of a context in this case.
812 if (key.is_identical_to(factory()->hidden_string())) return true; 824 if (IsInternallyUsedPropertyName(key)) return true;
813 825
814 // Check for compatibility between the security tokens in the 826 // Check for compatibility between the security tokens in the
815 // current lexical context and the accessed object. 827 // current lexical context and the accessed object.
816 DCHECK(context()); 828 DCHECK(context());
817 829
818 MayAccessDecision decision = MayAccessPreCheck(this, receiver, type); 830 MayAccessDecision decision = MayAccessPreCheck(this, receiver, type);
819 if (decision != UNKNOWN) return decision == YES; 831 if (decision != UNKNOWN) return decision == YES;
820 832
821 HandleScope scope(this); 833 HandleScope scope(this);
822 Handle<Object> data; 834 Handle<Object> data;
(...skipping 1728 matching lines...) Expand 10 before | Expand all | Expand 10 after
2551 if (prev_ && prev_->Intercept(flag)) return true; 2563 if (prev_ && prev_->Intercept(flag)) return true;
2552 // Then check whether this scope intercepts. 2564 // Then check whether this scope intercepts.
2553 if ((flag & intercept_mask_)) { 2565 if ((flag & intercept_mask_)) {
2554 intercepted_flags_ |= flag; 2566 intercepted_flags_ |= flag;
2555 return true; 2567 return true;
2556 } 2568 }
2557 return false; 2569 return false;
2558 } 2570 }
2559 2571
2560 } } // namespace v8::internal 2572 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/isolate.h ('k') | src/lookup.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698