Chromium Code Reviews| Index: src/compiler/access-builder.cc |
| diff --git a/src/compiler/access-builder.cc b/src/compiler/access-builder.cc |
| index 530143440d52e4726bbceeabc2fe495023c7886e..a2f0acd54a1936e921488d8fb1151f0f408c0e9b 100644 |
| --- a/src/compiler/access-builder.cc |
| +++ b/src/compiler/access-builder.cc |
| @@ -549,6 +549,57 @@ FieldAccess AccessBuilder::ForJSGlobalObjectNativeContext() { |
| } |
| // static |
| +FieldAccess AccessBuilder::ForJSArrayIteratorObject() { |
| + FieldAccess access = {kTaggedBase, |
| + JSArrayIterator::kIteratedObjectOffset, |
| + Handle<Name>(), |
| + Type::ReceiverOrUndefined(), |
|
Benedikt Meurer
2016/11/09 20:00:32
Note for later changes/direction: I've been chatti
caitp
2016/11/09 20:55:24
Acknowledged.
|
| + MachineType::TaggedPointer(), |
| + kPointerWriteBarrier}; |
| + return access; |
| +} |
| + |
| +// static |
| +FieldAccess AccessBuilder::ForJSArrayIteratorIndex(InstanceType instance_type, |
| + ElementsKind elements_kind) { |
| + FieldAccess access = {kTaggedBase, |
| + JSArrayIterator::kNextIndexOffset, |
| + Handle<Name>(), |
| + TypeCache::Get().kPositiveSafeInteger, |
|
Benedikt Meurer
2016/11/09 20:00:32
s/kPositiveSafeInteger/kPositiveInteger/
caitp
2016/11/09 20:55:24
Iteration stops if index >= ToLength(array.[[Get]]
Benedikt Meurer
2016/11/10 04:49:55
Good point, you are right, thanks for the explanat
|
| + MachineType::AnyTagged(), |
| + kFullWriteBarrier}; |
| + if (instance_type == JS_ARRAY_TYPE) { |
| + if (IsFastDoubleElementsKind(elements_kind)) { |
| + access.type = TypeCache::Get().kFixedDoubleArrayLengthType; |
| + access.machine_type = MachineType::TaggedSigned(); |
| + access.write_barrier_kind = kNoWriteBarrier; |
| + } else if (IsFastElementsKind(elements_kind)) { |
| + access.type = TypeCache::Get().kFixedArrayLengthType; |
| + access.machine_type = MachineType::TaggedSigned(); |
| + access.write_barrier_kind = kNoWriteBarrier; |
| + } else { |
| + access.type = TypeCache::Get().kJSArrayLengthType; |
| + } |
| + } else if (instance_type == JS_TYPED_ARRAY_TYPE) { |
| + access.type = TypeCache::Get().kJSTypedArrayLengthType; |
| + access.machine_type = MachineType::TaggedSigned(); |
| + access.write_barrier_kind = kNoWriteBarrier; |
| + } |
| + return access; |
| +} |
| + |
| +// static |
| +FieldAccess AccessBuilder::ForJSArrayIteratorObjectMap() { |
| + FieldAccess access = {kTaggedBase, |
| + JSArrayIterator::kIteratedObjectMapOffset, |
| + Handle<Name>(), |
| + Type::OtherInternal(), |
| + MachineType::TaggedPointer(), |
| + kPointerWriteBarrier}; |
| + return access; |
| +} |
| + |
| +// static |
| FieldAccess AccessBuilder::ForJSStringIteratorString() { |
| FieldAccess access = { |
| kTaggedBase, JSStringIterator::kStringOffset, Handle<Name>(), |