| OLD | NEW |
| 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 4748 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4759 if (length() == 0) return 0; | 4759 if (length() == 0) return 0; |
| 4760 return Smi::cast(get(group))->value(); | 4760 return Smi::cast(get(group))->value(); |
| 4761 } | 4761 } |
| 4762 | 4762 |
| 4763 | 4763 |
| 4764 void DependentCode::set_number_of_entries(DependencyGroup group, int value) { | 4764 void DependentCode::set_number_of_entries(DependencyGroup group, int value) { |
| 4765 set(group, Smi::FromInt(value)); | 4765 set(group, Smi::FromInt(value)); |
| 4766 } | 4766 } |
| 4767 | 4767 |
| 4768 | 4768 |
| 4769 bool DependentCode::is_code_at(int i) { | |
| 4770 return get(kCodesStartIndex + i)->IsCode(); | |
| 4771 } | |
| 4772 | |
| 4773 Code* DependentCode::code_at(int i) { | |
| 4774 return Code::cast(get(kCodesStartIndex + i)); | |
| 4775 } | |
| 4776 | |
| 4777 | |
| 4778 CompilationInfo* DependentCode::compilation_info_at(int i) { | |
| 4779 return reinterpret_cast<CompilationInfo*>( | |
| 4780 Foreign::cast(get(kCodesStartIndex + i))->foreign_address()); | |
| 4781 } | |
| 4782 | |
| 4783 | |
| 4784 void DependentCode::set_object_at(int i, Object* object) { | 4769 void DependentCode::set_object_at(int i, Object* object) { |
| 4785 set(kCodesStartIndex + i, object); | 4770 set(kCodesStartIndex + i, object); |
| 4786 } | 4771 } |
| 4787 | 4772 |
| 4788 | 4773 |
| 4789 Object* DependentCode::object_at(int i) { | 4774 Object* DependentCode::object_at(int i) { |
| 4790 return get(kCodesStartIndex + i); | 4775 return get(kCodesStartIndex + i); |
| 4791 } | 4776 } |
| 4792 | 4777 |
| 4793 | 4778 |
| 4794 Object** DependentCode::slot_at(int i) { | |
| 4795 return RawFieldOfElementAt(kCodesStartIndex + i); | |
| 4796 } | |
| 4797 | |
| 4798 | |
| 4799 void DependentCode::clear_at(int i) { | 4779 void DependentCode::clear_at(int i) { |
| 4800 set_undefined(kCodesStartIndex + i); | 4780 set_undefined(kCodesStartIndex + i); |
| 4801 } | 4781 } |
| 4802 | 4782 |
| 4803 | 4783 |
| 4804 void DependentCode::copy(int from, int to) { | 4784 void DependentCode::copy(int from, int to) { |
| 4805 set(kCodesStartIndex + to, get(kCodesStartIndex + from)); | 4785 set(kCodesStartIndex + to, get(kCodesStartIndex + from)); |
| 4806 } | 4786 } |
| 4807 | 4787 |
| 4808 | 4788 |
| (...skipping 2412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7221 | 7201 |
| 7222 | 7202 |
| 7223 Handle<ObjectHashTable> ObjectHashTable::Shrink( | 7203 Handle<ObjectHashTable> ObjectHashTable::Shrink( |
| 7224 Handle<ObjectHashTable> table, Handle<Object> key) { | 7204 Handle<ObjectHashTable> table, Handle<Object> key) { |
| 7225 return DerivedHashTable::Shrink(table, key); | 7205 return DerivedHashTable::Shrink(table, key); |
| 7226 } | 7206 } |
| 7227 | 7207 |
| 7228 | 7208 |
| 7229 template <int entrysize> | 7209 template <int entrysize> |
| 7230 bool WeakHashTableShape<entrysize>::IsMatch(Handle<Object> key, Object* other) { | 7210 bool WeakHashTableShape<entrysize>::IsMatch(Handle<Object> key, Object* other) { |
| 7231 return key->SameValue(other); | 7211 if (other->IsWeakCell()) other = WeakCell::cast(other)->value(); |
| 7212 return key->IsWeakCell() ? WeakCell::cast(*key)->value() == other |
| 7213 : *key == other; |
| 7232 } | 7214 } |
| 7233 | 7215 |
| 7234 | 7216 |
| 7235 template <int entrysize> | 7217 template <int entrysize> |
| 7236 uint32_t WeakHashTableShape<entrysize>::Hash(Handle<Object> key) { | 7218 uint32_t WeakHashTableShape<entrysize>::Hash(Handle<Object> key) { |
| 7237 intptr_t hash = reinterpret_cast<intptr_t>(*key); | 7219 intptr_t hash = |
| 7220 key->IsWeakCell() |
| 7221 ? reinterpret_cast<intptr_t>(WeakCell::cast(*key)->value()) |
| 7222 : reinterpret_cast<intptr_t>(*key); |
| 7238 return (uint32_t)(hash & 0xFFFFFFFF); | 7223 return (uint32_t)(hash & 0xFFFFFFFF); |
| 7239 } | 7224 } |
| 7240 | 7225 |
| 7241 | 7226 |
| 7242 template <int entrysize> | 7227 template <int entrysize> |
| 7243 uint32_t WeakHashTableShape<entrysize>::HashForObject(Handle<Object> key, | 7228 uint32_t WeakHashTableShape<entrysize>::HashForObject(Handle<Object> key, |
| 7244 Object* other) { | 7229 Object* other) { |
| 7230 if (other->IsWeakCell()) other = WeakCell::cast(other)->value(); |
| 7245 intptr_t hash = reinterpret_cast<intptr_t>(other); | 7231 intptr_t hash = reinterpret_cast<intptr_t>(other); |
| 7246 return (uint32_t)(hash & 0xFFFFFFFF); | 7232 return (uint32_t)(hash & 0xFFFFFFFF); |
| 7247 } | 7233 } |
| 7248 | 7234 |
| 7249 | 7235 |
| 7250 template <int entrysize> | 7236 template <int entrysize> |
| 7251 Handle<Object> WeakHashTableShape<entrysize>::AsHandle(Isolate* isolate, | 7237 Handle<Object> WeakHashTableShape<entrysize>::AsHandle(Isolate* isolate, |
| 7252 Handle<Object> key) { | 7238 Handle<Object> key) { |
| 7253 return key; | 7239 return key; |
| 7254 } | 7240 } |
| (...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7626 #undef READ_SHORT_FIELD | 7612 #undef READ_SHORT_FIELD |
| 7627 #undef WRITE_SHORT_FIELD | 7613 #undef WRITE_SHORT_FIELD |
| 7628 #undef READ_BYTE_FIELD | 7614 #undef READ_BYTE_FIELD |
| 7629 #undef WRITE_BYTE_FIELD | 7615 #undef WRITE_BYTE_FIELD |
| 7630 #undef NOBARRIER_READ_BYTE_FIELD | 7616 #undef NOBARRIER_READ_BYTE_FIELD |
| 7631 #undef NOBARRIER_WRITE_BYTE_FIELD | 7617 #undef NOBARRIER_WRITE_BYTE_FIELD |
| 7632 | 7618 |
| 7633 } } // namespace v8::internal | 7619 } } // namespace v8::internal |
| 7634 | 7620 |
| 7635 #endif // V8_OBJECTS_INL_H_ | 7621 #endif // V8_OBJECTS_INL_H_ |
| OLD | NEW |