OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 #ifndef V8_ISOLATE_INL_H_ | 5 #ifndef V8_ISOLATE_INL_H_ |
6 #define V8_ISOLATE_INL_H_ | 6 #define V8_ISOLATE_INL_H_ |
7 | 7 |
8 #include "src/isolate.h" | 8 #include "src/isolate.h" |
9 #include "src/objects-inl.h" | 9 #include "src/objects-inl.h" |
10 | 10 |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 // a constructor property | 123 // a constructor property |
124 // - To check that Array[Symbol.species] == Array, JS code has to execute, | 124 // - To check that Array[Symbol.species] == Array, JS code has to execute, |
125 // but JS cannot be invoked in callstack overflow situations | 125 // but JS cannot be invoked in callstack overflow situations |
126 // All that could be checked reliably is that | 126 // All that could be checked reliably is that |
127 // Array.prototype.constructor == Array. Given that limitation, no check is | 127 // Array.prototype.constructor == Array. Given that limitation, no check is |
128 // done here. In place, there are mjsunit tests harmony/array-species* which | 128 // done here. In place, there are mjsunit tests harmony/array-species* which |
129 // ensure that behavior is correct in various invalid protector cases. | 129 // ensure that behavior is correct in various invalid protector cases. |
130 | 130 |
131 Cell* species_cell = heap()->species_protector(); | 131 Cell* species_cell = heap()->species_protector(); |
132 return species_cell->value()->IsSmi() && | 132 return species_cell->value()->IsSmi() && |
133 Smi::cast(species_cell->value())->value() == kArrayProtectorValid; | 133 Smi::cast(species_cell->value())->value() == kProtectorValid; |
134 } | 134 } |
135 | 135 |
136 bool Isolate::IsHasInstanceLookupChainIntact() { | 136 bool Isolate::IsHasInstanceLookupChainIntact() { |
137 PropertyCell* has_instance_cell = heap()->has_instance_protector(); | 137 PropertyCell* has_instance_cell = heap()->has_instance_protector(); |
138 return has_instance_cell->value() == Smi::FromInt(kArrayProtectorValid); | 138 return has_instance_cell->value() == Smi::FromInt(kProtectorValid); |
139 } | 139 } |
140 | 140 |
141 bool Isolate::IsStringLengthOverflowIntact() { | 141 bool Isolate::IsStringLengthOverflowIntact() { |
142 PropertyCell* has_instance_cell = heap()->string_length_protector(); | 142 PropertyCell* has_instance_cell = heap()->string_length_protector(); |
143 return has_instance_cell->value() == Smi::FromInt(kArrayProtectorValid); | 143 return has_instance_cell->value() == Smi::FromInt(kProtectorValid); |
144 } | 144 } |
145 | 145 |
146 bool Isolate::IsFastArrayIterationIntact() { | 146 bool Isolate::IsFastArrayIterationIntact() { |
147 Cell* fast_iteration = heap()->fast_array_iteration_protector(); | 147 Cell* fast_iteration = heap()->fast_array_iteration_protector(); |
148 return fast_iteration->value() == Smi::FromInt(kArrayProtectorValid); | 148 return fast_iteration->value() == Smi::FromInt(kProtectorValid); |
| 149 } |
| 150 |
| 151 bool Isolate::IsArrayIteratorLookupChainIntact() { |
| 152 Cell* array_iterator_cell = heap()->array_iterator_protector(); |
| 153 return array_iterator_cell->value() == Smi::FromInt(kProtectorValid); |
149 } | 154 } |
150 | 155 |
151 } // namespace internal | 156 } // namespace internal |
152 } // namespace v8 | 157 } // namespace v8 |
153 | 158 |
154 #endif // V8_ISOLATE_INL_H_ | 159 #endif // V8_ISOLATE_INL_H_ |
OLD | NEW |