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

Side by Side Diff: src/objects-inl.h

Issue 817223003: Remove custom weak handling of monomorphic IC. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 12 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 unified diff | Download patch
« no previous file with comments | « src/objects-debug.cc ('k') | no next file » | 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 // Review notes: 5 // Review notes:
6 // 6 //
7 // - The use of macros in these inline functions may seem superfluous 7 // - The use of macros in these inline functions may seem superfluous
8 // but it is absolutely needed to make sure gcc generates optimal 8 // but it is absolutely needed to make sure gcc generates optimal
9 // code. gcc is not happy when attempting to inline too deep. 9 // code. gcc is not happy when attempting to inline too deep.
10 // 10 //
(...skipping 5050 matching lines...) Expand 10 before | Expand all | Expand 10 after
5061 5061
5062 void Code::set_marked_for_deoptimization(bool flag) { 5062 void Code::set_marked_for_deoptimization(bool flag) {
5063 DCHECK(kind() == OPTIMIZED_FUNCTION); 5063 DCHECK(kind() == OPTIMIZED_FUNCTION);
5064 DCHECK(!flag || AllowDeoptimization::IsAllowed(GetIsolate())); 5064 DCHECK(!flag || AllowDeoptimization::IsAllowed(GetIsolate()));
5065 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset); 5065 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
5066 int updated = MarkedForDeoptimizationField::update(previous, flag); 5066 int updated = MarkedForDeoptimizationField::update(previous, flag);
5067 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated); 5067 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
5068 } 5068 }
5069 5069
5070 5070
5071 bool Code::is_weak_stub() {
5072 return CanBeWeakStub() && WeakStubField::decode(
5073 READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
5074 }
5075
5076
5077 void Code::mark_as_weak_stub() {
5078 DCHECK(CanBeWeakStub());
5079 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
5080 int updated = WeakStubField::update(previous, true);
5081 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
5082 }
5083
5084
5085 bool Code::is_invalidated_weak_stub() {
5086 return is_weak_stub() && InvalidatedWeakStubField::decode(
5087 READ_UINT32_FIELD(this, kKindSpecificFlags1Offset));
5088 }
5089
5090
5091 void Code::mark_as_invalidated_weak_stub() {
5092 DCHECK(is_inline_cache_stub());
5093 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset);
5094 int updated = InvalidatedWeakStubField::update(previous, true);
5095 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated);
5096 }
5097
5098
5099 bool Code::is_inline_cache_stub() { 5071 bool Code::is_inline_cache_stub() {
5100 Kind kind = this->kind(); 5072 Kind kind = this->kind();
5101 switch (kind) { 5073 switch (kind) {
5102 #define CASE(name) case name: return true; 5074 #define CASE(name) case name: return true;
5103 IC_KIND_LIST(CASE) 5075 IC_KIND_LIST(CASE)
5104 #undef CASE 5076 #undef CASE
5105 default: return false; 5077 default: return false;
5106 } 5078 }
5107 } 5079 }
5108 5080
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
5235 } 5207 }
5236 private: 5208 private:
5237 static const int kMaxCount = 4; 5209 static const int kMaxCount = 4;
5238 int count_; 5210 int count_;
5239 Handle<Map> find_[kMaxCount]; 5211 Handle<Map> find_[kMaxCount];
5240 Handle<Object> replace_[kMaxCount]; 5212 Handle<Object> replace_[kMaxCount];
5241 friend class Code; 5213 friend class Code;
5242 }; 5214 };
5243 5215
5244 5216
5245 bool Code::IsWeakObjectInIC(Object* object) {
5246 return object->IsMap() && Map::cast(object)->CanTransition() &&
5247 FLAG_collect_maps &&
5248 FLAG_weak_embedded_maps_in_ic;
5249 }
5250
5251
5252 Object* Map::prototype() const { 5217 Object* Map::prototype() const {
5253 return READ_FIELD(this, kPrototypeOffset); 5218 return READ_FIELD(this, kPrototypeOffset);
5254 } 5219 }
5255 5220
5256 5221
5257 void Map::set_prototype(Object* value, WriteBarrierMode mode) { 5222 void Map::set_prototype(Object* value, WriteBarrierMode mode) {
5258 DCHECK(value->IsNull() || value->IsJSReceiver()); 5223 DCHECK(value->IsNull() || value->IsJSReceiver());
5259 WRITE_FIELD(this, kPrototypeOffset, value); 5224 WRITE_FIELD(this, kPrototypeOffset, value);
5260 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kPrototypeOffset, value, mode); 5225 CONDITIONAL_WRITE_BARRIER(GetHeap(), this, kPrototypeOffset, value, mode);
5261 } 5226 }
(...skipping 2291 matching lines...) Expand 10 before | Expand all | Expand 10 after
7553 #undef READ_SHORT_FIELD 7518 #undef READ_SHORT_FIELD
7554 #undef WRITE_SHORT_FIELD 7519 #undef WRITE_SHORT_FIELD
7555 #undef READ_BYTE_FIELD 7520 #undef READ_BYTE_FIELD
7556 #undef WRITE_BYTE_FIELD 7521 #undef WRITE_BYTE_FIELD
7557 #undef NOBARRIER_READ_BYTE_FIELD 7522 #undef NOBARRIER_READ_BYTE_FIELD
7558 #undef NOBARRIER_WRITE_BYTE_FIELD 7523 #undef NOBARRIER_WRITE_BYTE_FIELD
7559 7524
7560 } } // namespace v8::internal 7525 } } // namespace v8::internal
7561 7526
7562 #endif // V8_OBJECTS_INL_H_ 7527 #endif // V8_OBJECTS_INL_H_
OLDNEW
« no previous file with comments | « src/objects-debug.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698