Index: src/objects-inl.h |
diff --git a/src/objects-inl.h b/src/objects-inl.h |
index 0167f63408caaba7311799cbbe11b0ad7947feae..b12ce93e473450c516990fc0514987f273ce98ac 100644 |
--- a/src/objects-inl.h |
+++ b/src/objects-inl.h |
@@ -873,10 +873,6 @@ bool HeapObject::IsCompilationCacheTable() const { return IsHashTable(); } |
bool HeapObject::IsCodeCacheHashTable() const { return IsHashTable(); } |
-bool HeapObject::IsPolymorphicCodeCacheHashTable() const { |
- return IsHashTable(); |
-} |
- |
bool HeapObject::IsMapCache() const { return IsHashTable(); } |
bool HeapObject::IsObjectHashTable() const { return IsHashTable(); } |
@@ -3037,13 +3033,14 @@ int HashTable<Derived, Shape, Key>::FindEntry(Isolate* isolate, Key key, |
uint32_t entry = FirstProbe(hash, capacity); |
uint32_t count = 1; |
// EnsureCapacity will guarantee the hash table is never full. |
+ Object* undefined = isolate->heap()->undefined_value(); |
+ Object* the_hole = isolate->heap()->the_hole_value(); |
while (true) { |
Object* element = KeyAt(entry); |
// Empty entry. Uses raw unchecked accessors because it is called by the |
// string table during bootstrapping. |
- if (element == isolate->heap()->root(Heap::kUndefinedValueRootIndex)) break; |
- if (element != isolate->heap()->root(Heap::kTheHoleValueRootIndex) && |
- Shape::IsMatch(key, element)) return entry; |
+ if (element == undefined) break; |
+ if (element != the_hole && Shape::IsMatch(key, element)) return entry; |
entry = NextProbe(entry, count++, capacity); |
} |
return kNotFound; |
@@ -3149,7 +3146,6 @@ CAST_ACCESSOR(ObjectHashTable) |
CAST_ACCESSOR(Oddball) |
CAST_ACCESSOR(OrderedHashMap) |
CAST_ACCESSOR(OrderedHashSet) |
-CAST_ACCESSOR(PolymorphicCodeCacheHashTable) |
CAST_ACCESSOR(PropertyCell) |
CAST_ACCESSOR(ScopeInfo) |
CAST_ACCESSOR(SeededNumberDictionary) |
@@ -4624,7 +4620,9 @@ bool Map::is_stable() { |
bool Map::has_code_cache() { |
- return code_cache() != GetIsolate()->heap()->empty_fixed_array(); |
+ // Code caches are always fixed arrays. The empty fixed array is used as a |
+ // sentinel for an absent code cache. |
+ return FixedArray::cast(code_cache())->length() != 0; |
} |
@@ -4789,10 +4787,6 @@ ExtraICState Code::extra_ic_state() { |
} |
-Code::StubType Code::type() { |
- return ExtractTypeFromFlags(flags()); |
-} |
- |
// For initialization. |
void Code::set_raw_kind_specific_flags1(int value) { |
WRITE_INT_FIELD(this, kKindSpecificFlags1Offset, value); |
@@ -5070,11 +5064,10 @@ Address Code::constant_pool() { |
} |
Code::Flags Code::ComputeFlags(Kind kind, InlineCacheState ic_state, |
- ExtraICState extra_ic_state, StubType type, |
+ ExtraICState extra_ic_state, |
CacheHolderFlag holder) { |
// Compute the bit mask. |
unsigned int bits = KindField::encode(kind) | ICStateField::encode(ic_state) | |
- TypeField::encode(type) | |
ExtraICStateField::encode(extra_ic_state) | |
CacheHolderField::encode(holder); |
return static_cast<Flags>(bits); |
@@ -5082,15 +5075,13 @@ Code::Flags Code::ComputeFlags(Kind kind, InlineCacheState ic_state, |
Code::Flags Code::ComputeMonomorphicFlags(Kind kind, |
ExtraICState extra_ic_state, |
- CacheHolderFlag holder, |
- StubType type) { |
- return ComputeFlags(kind, MONOMORPHIC, extra_ic_state, type, holder); |
+ CacheHolderFlag holder) { |
+ return ComputeFlags(kind, MONOMORPHIC, extra_ic_state, holder); |
} |
- |
-Code::Flags Code::ComputeHandlerFlags(Kind handler_kind, StubType type, |
+Code::Flags Code::ComputeHandlerFlags(Kind handler_kind, |
CacheHolderFlag holder) { |
- return ComputeFlags(Code::HANDLER, MONOMORPHIC, handler_kind, type, holder); |
+ return ComputeFlags(Code::HANDLER, MONOMORPHIC, handler_kind, holder); |
} |
@@ -5109,23 +5100,12 @@ ExtraICState Code::ExtractExtraICStateFromFlags(Flags flags) { |
} |
-Code::StubType Code::ExtractTypeFromFlags(Flags flags) { |
- return TypeField::decode(flags); |
-} |
- |
CacheHolderFlag Code::ExtractCacheHolderFromFlags(Flags flags) { |
return CacheHolderField::decode(flags); |
} |
- |
-Code::Flags Code::RemoveTypeFromFlags(Flags flags) { |
- int bits = flags & ~TypeField::kMask; |
- return static_cast<Flags>(bits); |
-} |
- |
- |
-Code::Flags Code::RemoveTypeAndHolderFromFlags(Flags flags) { |
- int bits = flags & ~TypeField::kMask & ~CacheHolderField::kMask; |
+Code::Flags Code::RemoveHolderFromFlags(Flags flags) { |
+ int bits = flags & ~CacheHolderField::kMask; |
return static_cast<Flags>(bits); |
} |
@@ -5803,11 +5783,6 @@ BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_setter_function, |
BOOL_ACCESSORS(SharedFunctionInfo, compiler_hints, is_default_constructor, |
kIsDefaultConstructor) |
-ACCESSORS(CodeCache, default_cache, FixedArray, kDefaultCacheOffset) |
-ACCESSORS(CodeCache, normal_type_cache, Object, kNormalTypeCacheOffset) |
- |
-ACCESSORS(PolymorphicCodeCache, cache, Object, kCacheOffset) |
- |
bool Script::HasValidSource() { |
Object* src = this->source(); |
if (!src->IsString()) return true; |
@@ -7519,7 +7494,6 @@ void Map::ClearCodeCache(Heap* heap) { |
// Please note this function is used during marking: |
// - MarkCompactCollector::MarkUnmarkedObject |
// - IncrementalMarking::Step |
- DCHECK(!heap->InNewSpace(heap->empty_fixed_array())); |
WRITE_FIELD(this, kCodeCacheOffset, heap->empty_fixed_array()); |
} |