| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 2753 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2764 if (IsJSGlobalProxy()) { | 2764 if (IsJSGlobalProxy()) { |
| 2765 Object* proto = GetPrototype(); | 2765 Object* proto = GetPrototype(); |
| 2766 if (proto->IsNull()) return value; | 2766 if (proto->IsNull()) return value; |
| 2767 ASSERT(proto->IsJSGlobalObject()); | 2767 ASSERT(proto->IsJSGlobalObject()); |
| 2768 return JSObject::cast(proto)->SetLocalPropertyIgnoreAttributes( | 2768 return JSObject::cast(proto)->SetLocalPropertyIgnoreAttributes( |
| 2769 name, | 2769 name, |
| 2770 value, | 2770 value, |
| 2771 attributes); | 2771 attributes); |
| 2772 } | 2772 } |
| 2773 | 2773 |
| 2774 // Check for accessor in prototype chain removed here in clone. | 2774 // Unlike SetLocalProperty, we ignore the prototype chain and |
| 2775 // any accessors in it. |
| 2775 if (!result.IsFound()) { | 2776 if (!result.IsFound()) { |
| 2776 // Neither properties nor transitions found. | 2777 // Neither properties nor transitions found. |
| 2777 return AddProperty(name, value, attributes, kNonStrictMode); | 2778 return AddProperty(name, value, attributes, kNonStrictMode); |
| 2778 } | 2779 } |
| 2779 | 2780 |
| 2780 PropertyDetails details = PropertyDetails(attributes, NORMAL); | 2781 PropertyDetails details = PropertyDetails(attributes, NORMAL); |
| 2781 | 2782 |
| 2782 // Check of IsReadOnly removed from here in clone. | 2783 // Check of IsReadOnly removed from here in clone. |
| 2783 switch (result.type()) { | 2784 switch (result.type()) { |
| 2784 case NORMAL: | 2785 case NORMAL: |
| (...skipping 7277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10062 public: | 10063 public: |
| 10063 explicit SubStringAsciiSymbolKey(Handle<SeqAsciiString> string, | 10064 explicit SubStringAsciiSymbolKey(Handle<SeqAsciiString> string, |
| 10064 int from, | 10065 int from, |
| 10065 int length) | 10066 int length) |
| 10066 : string_(string), from_(from), length_(length) { } | 10067 : string_(string), from_(from), length_(length) { } |
| 10067 | 10068 |
| 10068 uint32_t Hash() { | 10069 uint32_t Hash() { |
| 10069 ASSERT(length_ >= 0); | 10070 ASSERT(length_ >= 0); |
| 10070 ASSERT(from_ + length_ <= string_->length()); | 10071 ASSERT(from_ + length_ <= string_->length()); |
| 10071 StringHasher hasher(length_); | 10072 StringHasher hasher(length_); |
| 10073 AssertNoAllocation no_alloc; |
| 10074 const char* chars = string_->GetChars() + from_; |
| 10072 | 10075 |
| 10073 // Very long strings have a trivial hash that doesn't inspect the | 10076 // Very long strings have a trivial hash that doesn't inspect the |
| 10074 // string contents. | 10077 // string contents. |
| 10075 if (hasher.has_trivial_hash()) { | 10078 if (hasher.has_trivial_hash()) { |
| 10076 hash_field_ = hasher.GetHashField(); | 10079 hash_field_ = hasher.GetHashField(); |
| 10077 } else { | 10080 } else { |
| 10078 int i = 0; | 10081 int i = 0; |
| 10079 // Do the iterative array index computation as long as there is a | 10082 // Do the iterative array index computation as long as there is a |
| 10080 // chance this is an array index. | 10083 // chance this is an array index. |
| 10081 while (i < length_ && hasher.is_array_index()) { | 10084 while (i < length_ && hasher.is_array_index()) { |
| 10082 hasher.AddCharacter(static_cast<uc32>( | 10085 hasher.AddCharacter(static_cast<uc32>(chars[i])); |
| 10083 string_->SeqAsciiStringGet(i + from_))); | |
| 10084 i++; | 10086 i++; |
| 10085 } | 10087 } |
| 10086 | 10088 |
| 10087 // Process the remaining characters without updating the array | 10089 // Process the remaining characters without updating the array |
| 10088 // index. | 10090 // index. |
| 10089 while (i < length_) { | 10091 while (i < length_) { |
| 10090 hasher.AddCharacterNoIndex(static_cast<uc32>( | 10092 hasher.AddCharacterNoIndex(static_cast<uc32>(chars[i])); |
| 10091 string_->SeqAsciiStringGet(i + from_))); | |
| 10092 i++; | 10093 i++; |
| 10093 } | 10094 } |
| 10094 hash_field_ = hasher.GetHashField(); | 10095 hash_field_ = hasher.GetHashField(); |
| 10095 } | 10096 } |
| 10096 | 10097 |
| 10097 uint32_t result = hash_field_ >> String::kHashShift; | 10098 uint32_t result = hash_field_ >> String::kHashShift; |
| 10098 ASSERT(result != 0); // Ensure that the hash value of 0 is never computed. | 10099 ASSERT(result != 0); // Ensure that the hash value of 0 is never computed. |
| 10099 return result; | 10100 return result; |
| 10100 } | 10101 } |
| 10101 | 10102 |
| (...skipping 1916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12018 if (break_point_objects()->IsUndefined()) return 0; | 12019 if (break_point_objects()->IsUndefined()) return 0; |
| 12019 // Single break point. | 12020 // Single break point. |
| 12020 if (!break_point_objects()->IsFixedArray()) return 1; | 12021 if (!break_point_objects()->IsFixedArray()) return 1; |
| 12021 // Multiple break points. | 12022 // Multiple break points. |
| 12022 return FixedArray::cast(break_point_objects())->length(); | 12023 return FixedArray::cast(break_point_objects())->length(); |
| 12023 } | 12024 } |
| 12024 #endif | 12025 #endif |
| 12025 | 12026 |
| 12026 | 12027 |
| 12027 } } // namespace v8::internal | 12028 } } // namespace v8::internal |
| OLD | NEW |