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

Side by Side Diff: src/objects.h

Issue 35413006: Correct handling of arrays with callbacks in the prototype chain. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: ports. Created 7 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 5288 matching lines...) Expand 10 before | Expand all | Expand 10 after
5299 int CodeSize() { return SizeFor(body_size()); } 5299 int CodeSize() { return SizeFor(body_size()); }
5300 inline void CodeIterateBody(ObjectVisitor* v); 5300 inline void CodeIterateBody(ObjectVisitor* v);
5301 5301
5302 template<typename StaticVisitor> 5302 template<typename StaticVisitor>
5303 inline void CodeIterateBody(Heap* heap); 5303 inline void CodeIterateBody(Heap* heap);
5304 5304
5305 DECLARE_PRINTER(Code) 5305 DECLARE_PRINTER(Code)
5306 DECLARE_VERIFIER(Code) 5306 DECLARE_VERIFIER(Code)
5307 5307
5308 void ClearInlineCaches(); 5308 void ClearInlineCaches();
5309 void ClearInlineCaches(Kind kind);
5310
5309 void ClearTypeFeedbackCells(Heap* heap); 5311 void ClearTypeFeedbackCells(Heap* heap);
5310 5312
5311 BailoutId TranslatePcOffsetToAstId(uint32_t pc_offset); 5313 BailoutId TranslatePcOffsetToAstId(uint32_t pc_offset);
5312 5314
5313 #define DECLARE_CODE_AGE_ENUM(X) k##X##CodeAge, 5315 #define DECLARE_CODE_AGE_ENUM(X) k##X##CodeAge,
5314 enum Age { 5316 enum Age {
5315 kNotExecutedCodeAge = -2, 5317 kNotExecutedCodeAge = -2,
5316 kExecutedOnceCodeAge = -1, 5318 kExecutedOnceCodeAge = -1,
5317 kNoAgeCodeAge = 0, 5319 kNoAgeCodeAge = 0,
5318 CODE_AGE_LIST(DECLARE_CODE_AGE_ENUM) 5320 CODE_AGE_LIST(DECLARE_CODE_AGE_ENUM)
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
5467 ExtendedExtraICStateField::kShift + 5469 ExtendedExtraICStateField::kShift +
5468 ExtendedExtraICStateField::kSize); 5470 ExtendedExtraICStateField::kSize);
5469 5471
5470 // This constant should be encodable in an ARM instruction. 5472 // This constant should be encodable in an ARM instruction.
5471 static const int kFlagsNotUsedInLookup = 5473 static const int kFlagsNotUsedInLookup =
5472 TypeField::kMask | CacheHolderField::kMask; 5474 TypeField::kMask | CacheHolderField::kMask;
5473 5475
5474 private: 5476 private:
5475 friend class RelocIterator; 5477 friend class RelocIterator;
5476 5478
5479 void ClearInlineCaches(Kind* kind);
5480
5477 // Code aging 5481 // Code aging
5478 byte* FindCodeAgeSequence(); 5482 byte* FindCodeAgeSequence();
5479 static void GetCodeAgeAndParity(Code* code, Age* age, 5483 static void GetCodeAgeAndParity(Code* code, Age* age,
5480 MarkingParity* parity); 5484 MarkingParity* parity);
5481 static void GetCodeAgeAndParity(byte* sequence, Age* age, 5485 static void GetCodeAgeAndParity(byte* sequence, Age* age,
5482 MarkingParity* parity); 5486 MarkingParity* parity);
5483 static Code* GetCodeAgeStub(Isolate* isolate, Age age, MarkingParity parity); 5487 static Code* GetCodeAgeStub(Isolate* isolate, Age age, MarkingParity parity);
5484 5488
5485 // Code aging -- platform-specific 5489 // Code aging -- platform-specific
5486 static void PatchPlatformCodeAge(Isolate* isolate, 5490 static void PatchPlatformCodeAge(Isolate* isolate,
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
5758 } 5762 }
5759 5763
5760 inline bool has_slow_elements_kind() { 5764 inline bool has_slow_elements_kind() {
5761 return elements_kind() == DICTIONARY_ELEMENTS 5765 return elements_kind() == DICTIONARY_ELEMENTS
5762 || elements_kind() == NON_STRICT_ARGUMENTS_ELEMENTS; 5766 || elements_kind() == NON_STRICT_ARGUMENTS_ELEMENTS;
5763 } 5767 }
5764 5768
5765 static bool IsValidElementsTransition(ElementsKind from_kind, 5769 static bool IsValidElementsTransition(ElementsKind from_kind,
5766 ElementsKind to_kind); 5770 ElementsKind to_kind);
5767 5771
5772 bool DictionaryElementsInPrototypeChain();
5768 inline bool HasTransitionArray(); 5773 inline bool HasTransitionArray();
5769 inline bool HasElementsTransition(); 5774 inline bool HasElementsTransition();
5770 inline Map* elements_transition_map(); 5775 inline Map* elements_transition_map();
5771 MUST_USE_RESULT inline MaybeObject* set_elements_transition_map( 5776 MUST_USE_RESULT inline MaybeObject* set_elements_transition_map(
5772 Map* transitioned_map); 5777 Map* transitioned_map);
5773 inline void SetTransition(int transition_index, Map* target); 5778 inline void SetTransition(int transition_index, Map* target);
5774 inline Map* GetTransition(int transition_index); 5779 inline Map* GetTransition(int transition_index);
5775 5780
5776 static Handle<TransitionArray> AddTransition(Handle<Map> map, 5781 static Handle<TransitionArray> AddTransition(Handle<Map> map,
5777 Handle<Name> key, 5782 Handle<Name> key,
(...skipping 4662 matching lines...) Expand 10 before | Expand all | Expand 10 after
10440 } else { 10445 } else {
10441 value &= ~(1 << bit_position); 10446 value &= ~(1 << bit_position);
10442 } 10447 }
10443 return value; 10448 return value;
10444 } 10449 }
10445 }; 10450 };
10446 10451
10447 } } // namespace v8::internal 10452 } } // namespace v8::internal
10448 10453
10449 #endif // V8_OBJECTS_H_ 10454 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698