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

Side by Side Diff: src/type-feedback-vector.h

Issue 2534613002: [ic] Use validity cells to protect keyed element stores against object's prototype chain modificati… (Closed)
Patch Set: The fix Created 4 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 #ifndef V8_TYPE_FEEDBACK_VECTOR_H_ 5 #ifndef V8_TYPE_FEEDBACK_VECTOR_H_
6 #define V8_TYPE_FEEDBACK_VECTOR_H_ 6 #define V8_TYPE_FEEDBACK_VECTOR_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "src/base/logging.h" 10 #include "src/base/logging.h"
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 257
258 DECLARE_PRINTER(TypeFeedbackVector) 258 DECLARE_PRINTER(TypeFeedbackVector)
259 259
260 // Clears the vector slots. 260 // Clears the vector slots.
261 void ClearSlots(SharedFunctionInfo* shared) { ClearSlotsImpl(shared, true); } 261 void ClearSlots(SharedFunctionInfo* shared) { ClearSlotsImpl(shared, true); }
262 262
263 void ClearSlotsAtGCTime(SharedFunctionInfo* shared) { 263 void ClearSlotsAtGCTime(SharedFunctionInfo* shared) {
264 ClearSlotsImpl(shared, false); 264 ClearSlotsImpl(shared, false);
265 } 265 }
266 266
267 static void ClearAllKeyedStoreICs(Isolate* isolate);
268 void ClearKeyedStoreICs(SharedFunctionInfo* shared);
269
270 // The object that indicates an uninitialized cache. 267 // The object that indicates an uninitialized cache.
271 static inline Handle<Symbol> UninitializedSentinel(Isolate* isolate); 268 static inline Handle<Symbol> UninitializedSentinel(Isolate* isolate);
272 269
273 // The object that indicates a megamorphic state. 270 // The object that indicates a megamorphic state.
274 static inline Handle<Symbol> MegamorphicSentinel(Isolate* isolate); 271 static inline Handle<Symbol> MegamorphicSentinel(Isolate* isolate);
275 272
276 // The object that indicates a premonomorphic state. 273 // The object that indicates a premonomorphic state.
277 static inline Handle<Symbol> PremonomorphicSentinel(Isolate* isolate); 274 static inline Handle<Symbol> PremonomorphicSentinel(Isolate* isolate);
278 275
279 // A raw version of the uninitialized sentinel that's safe to read during 276 // A raw version of the uninitialized sentinel that's safe to read during
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
599 void Clear(Code* host); 596 void Clear(Code* host);
600 597
601 // name can be a null handle for element loads. 598 // name can be a null handle for element loads.
602 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map, 599 void ConfigureMonomorphic(Handle<Name> name, Handle<Map> receiver_map,
603 Handle<Object> handler); 600 Handle<Object> handler);
604 // name can be null. 601 // name can be null.
605 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps, 602 void ConfigurePolymorphic(Handle<Name> name, MapHandleList* maps,
606 List<Handle<Object>>* handlers); 603 List<Handle<Object>>* handlers);
607 void ConfigurePolymorphic(MapHandleList* maps, 604 void ConfigurePolymorphic(MapHandleList* maps,
608 MapHandleList* transitioned_maps, 605 MapHandleList* transitioned_maps,
609 CodeHandleList* handlers); 606 List<Handle<Object>>* handlers);
610 void ConfigureMegamorphicKeyed(IcCheckType property_type); 607 void ConfigureMegamorphicKeyed(IcCheckType property_type);
611 608
612 KeyedAccessStoreMode GetKeyedAccessStoreMode() const; 609 KeyedAccessStoreMode GetKeyedAccessStoreMode() const;
613 IcCheckType GetKeyType() const; 610 IcCheckType GetKeyType() const;
614 611
615 InlineCacheState StateFromFeedback() const override; 612 InlineCacheState StateFromFeedback() const override;
616 Name* FindFirstName() const override; 613 Name* FindFirstName() const override;
617 }; 614 };
618 615
619 class BinaryOpICNexus final : public FeedbackNexus { 616 class BinaryOpICNexus final : public FeedbackNexus {
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 } 675 }
679 }; 676 };
680 677
681 inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback); 678 inline BinaryOperationHint BinaryOperationHintFromFeedback(int type_feedback);
682 inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback); 679 inline CompareOperationHint CompareOperationHintFromFeedback(int type_feedback);
683 680
684 } // namespace internal 681 } // namespace internal
685 } // namespace v8 682 } // namespace v8
686 683
687 #endif // V8_TRANSITIONS_H_ 684 #endif // V8_TRANSITIONS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698