| OLD | NEW |
| 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 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 } | 171 } |
| 172 | 172 |
| 173 | 173 |
| 174 bool Object::NonFailureIsHeapObject() { | 174 bool Object::NonFailureIsHeapObject() { |
| 175 ASSERT(!this->IsFailure()); | 175 ASSERT(!this->IsFailure()); |
| 176 return (reinterpret_cast<intptr_t>(this) & kSmiTagMask) != 0; | 176 return (reinterpret_cast<intptr_t>(this) & kSmiTagMask) != 0; |
| 177 } | 177 } |
| 178 | 178 |
| 179 | 179 |
| 180 TYPE_CHECKER(HeapNumber, HEAP_NUMBER_TYPE) | 180 TYPE_CHECKER(HeapNumber, HEAP_NUMBER_TYPE) |
| 181 TYPE_CHECKER(Symbol, SYMBOL_TYPE) |
| 182 |
| 183 |
| 184 bool Object::IsName() { |
| 185 return Object::IsHeapObject() |
| 186 && HeapObject::cast(this)->map()->instance_type() <= LAST_NAME_TYPE; |
| 187 } |
| 181 | 188 |
| 182 | 189 |
| 183 bool Object::IsString() { | 190 bool Object::IsString() { |
| 184 return Object::IsHeapObject() | 191 return Object::IsHeapObject() |
| 185 && HeapObject::cast(this)->map()->instance_type() < FIRST_NONSTRING_TYPE; | 192 && HeapObject::cast(this)->map()->instance_type() < FIRST_NONSTRING_TYPE; |
| 186 } | 193 } |
| 187 | 194 |
| 188 | 195 |
| 189 bool Object::IsSpecObject() { | 196 bool Object::IsSpecObject() { |
| 190 return Object::IsHeapObject() | 197 return Object::IsHeapObject() |
| (...skipping 2213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2404 CAST_ACCESSOR(MapCache) | 2411 CAST_ACCESSOR(MapCache) |
| 2405 CAST_ACCESSOR(String) | 2412 CAST_ACCESSOR(String) |
| 2406 CAST_ACCESSOR(SeqString) | 2413 CAST_ACCESSOR(SeqString) |
| 2407 CAST_ACCESSOR(SeqOneByteString) | 2414 CAST_ACCESSOR(SeqOneByteString) |
| 2408 CAST_ACCESSOR(SeqTwoByteString) | 2415 CAST_ACCESSOR(SeqTwoByteString) |
| 2409 CAST_ACCESSOR(SlicedString) | 2416 CAST_ACCESSOR(SlicedString) |
| 2410 CAST_ACCESSOR(ConsString) | 2417 CAST_ACCESSOR(ConsString) |
| 2411 CAST_ACCESSOR(ExternalString) | 2418 CAST_ACCESSOR(ExternalString) |
| 2412 CAST_ACCESSOR(ExternalAsciiString) | 2419 CAST_ACCESSOR(ExternalAsciiString) |
| 2413 CAST_ACCESSOR(ExternalTwoByteString) | 2420 CAST_ACCESSOR(ExternalTwoByteString) |
| 2421 CAST_ACCESSOR(Symbol) |
| 2414 CAST_ACCESSOR(JSReceiver) | 2422 CAST_ACCESSOR(JSReceiver) |
| 2415 CAST_ACCESSOR(JSObject) | 2423 CAST_ACCESSOR(JSObject) |
| 2416 CAST_ACCESSOR(Smi) | 2424 CAST_ACCESSOR(Smi) |
| 2417 CAST_ACCESSOR(HeapObject) | 2425 CAST_ACCESSOR(HeapObject) |
| 2418 CAST_ACCESSOR(HeapNumber) | 2426 CAST_ACCESSOR(HeapNumber) |
| 2419 CAST_ACCESSOR(Oddball) | 2427 CAST_ACCESSOR(Oddball) |
| 2420 CAST_ACCESSOR(JSGlobalPropertyCell) | 2428 CAST_ACCESSOR(JSGlobalPropertyCell) |
| 2421 CAST_ACCESSOR(SharedFunctionInfo) | 2429 CAST_ACCESSOR(SharedFunctionInfo) |
| 2422 CAST_ACCESSOR(Map) | 2430 CAST_ACCESSOR(Map) |
| 2423 CAST_ACCESSOR(JSFunction) | 2431 CAST_ACCESSOR(JSFunction) |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2460 return reinterpret_cast<HashTable*>(obj); | 2468 return reinterpret_cast<HashTable*>(obj); |
| 2461 } | 2469 } |
| 2462 | 2470 |
| 2463 | 2471 |
| 2464 SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) | 2472 SMI_ACCESSORS(FixedArrayBase, length, kLengthOffset) |
| 2465 SMI_ACCESSORS(FreeSpace, size, kSizeOffset) | 2473 SMI_ACCESSORS(FreeSpace, size, kSizeOffset) |
| 2466 | 2474 |
| 2467 SMI_ACCESSORS(String, length, kLengthOffset) | 2475 SMI_ACCESSORS(String, length, kLengthOffset) |
| 2468 | 2476 |
| 2469 | 2477 |
| 2470 uint32_t String::hash_field() { | 2478 uint32_t Name::hash_field() { |
| 2471 return READ_UINT32_FIELD(this, kHashFieldOffset); | 2479 return READ_UINT32_FIELD(this, kHashFieldOffset); |
| 2472 } | 2480 } |
| 2473 | 2481 |
| 2474 | 2482 |
| 2475 void String::set_hash_field(uint32_t value) { | 2483 void Name::set_hash_field(uint32_t value) { |
| 2476 WRITE_UINT32_FIELD(this, kHashFieldOffset, value); | 2484 WRITE_UINT32_FIELD(this, kHashFieldOffset, value); |
| 2477 #if V8_HOST_ARCH_64_BIT | 2485 #if V8_HOST_ARCH_64_BIT |
| 2478 WRITE_UINT32_FIELD(this, kHashFieldOffset + kIntSize, 0); | 2486 WRITE_UINT32_FIELD(this, kHashFieldOffset + kIntSize, 0); |
| 2479 #endif | 2487 #endif |
| 2480 } | 2488 } |
| 2481 | 2489 |
| 2482 | 2490 |
| 2483 bool String::Equals(String* other) { | 2491 bool String::Equals(String* other) { |
| 2484 if (other == this) return true; | 2492 if (other == this) return true; |
| 2485 if (StringShape(this).IsInternalized() && | 2493 if (StringShape(this).IsInternalized() && |
| (...skipping 2738 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5224 return StringDictionary::cast(properties()); | 5232 return StringDictionary::cast(properties()); |
| 5225 } | 5233 } |
| 5226 | 5234 |
| 5227 | 5235 |
| 5228 SeededNumberDictionary* JSObject::element_dictionary() { | 5236 SeededNumberDictionary* JSObject::element_dictionary() { |
| 5229 ASSERT(HasDictionaryElements()); | 5237 ASSERT(HasDictionaryElements()); |
| 5230 return SeededNumberDictionary::cast(elements()); | 5238 return SeededNumberDictionary::cast(elements()); |
| 5231 } | 5239 } |
| 5232 | 5240 |
| 5233 | 5241 |
| 5234 bool String::IsHashFieldComputed(uint32_t field) { | 5242 bool Name::IsHashFieldComputed(uint32_t field) { |
| 5235 return (field & kHashNotComputedMask) == 0; | 5243 return (field & kHashNotComputedMask) == 0; |
| 5236 } | 5244 } |
| 5237 | 5245 |
| 5238 | 5246 |
| 5239 bool String::HasHashCode() { | 5247 bool Name::HasHashCode() { |
| 5240 return IsHashFieldComputed(hash_field()); | 5248 return IsHashFieldComputed(hash_field()); |
| 5241 } | 5249 } |
| 5242 | 5250 |
| 5243 | 5251 |
| 5244 uint32_t String::Hash() { | 5252 uint32_t Name::Hash() { |
| 5245 // Fast case: has hash code already been computed? | 5253 // Fast case: has hash code already been computed? |
| 5246 uint32_t field = hash_field(); | 5254 uint32_t field = hash_field(); |
| 5247 if (IsHashFieldComputed(field)) return field >> kHashShift; | 5255 if (IsHashFieldComputed(field)) return field >> kHashShift; |
| 5248 // Slow case: compute hash code and set it. | 5256 // Slow case: compute hash code and set it. Has to be a string. |
| 5249 return ComputeAndSetHash(); | 5257 return String::cast(this)->ComputeAndSetHash(); |
| 5250 } | 5258 } |
| 5251 | 5259 |
| 5252 | 5260 |
| 5253 StringHasher::StringHasher(int length, uint32_t seed) | 5261 StringHasher::StringHasher(int length, uint32_t seed) |
| 5254 : length_(length), | 5262 : length_(length), |
| 5255 raw_running_hash_(seed), | 5263 raw_running_hash_(seed), |
| 5256 array_index_(0), | 5264 array_index_(0), |
| 5257 is_array_index_(0 < length_ && length_ <= String::kMaxArrayIndexSize), | 5265 is_array_index_(0 < length_ && length_ <= String::kMaxArrayIndexSize), |
| 5258 is_first_char_(true) { | 5266 is_first_char_(true) { |
| 5259 ASSERT(FLAG_randomize_hashes || raw_running_hash_ == 0); | 5267 ASSERT(FLAG_randomize_hashes || raw_running_hash_ == 0); |
| (...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5892 #undef WRITE_UINT32_FIELD | 5900 #undef WRITE_UINT32_FIELD |
| 5893 #undef READ_SHORT_FIELD | 5901 #undef READ_SHORT_FIELD |
| 5894 #undef WRITE_SHORT_FIELD | 5902 #undef WRITE_SHORT_FIELD |
| 5895 #undef READ_BYTE_FIELD | 5903 #undef READ_BYTE_FIELD |
| 5896 #undef WRITE_BYTE_FIELD | 5904 #undef WRITE_BYTE_FIELD |
| 5897 | 5905 |
| 5898 | 5906 |
| 5899 } } // namespace v8::internal | 5907 } } // namespace v8::internal |
| 5900 | 5908 |
| 5901 #endif // V8_OBJECTS_INL_H_ | 5909 #endif // V8_OBJECTS_INL_H_ |
| OLD | NEW |