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..02ae6673d75ba44b9bccc9de5f1ed7a7df7ca2d6 100644 |
| --- a/src/compiler/access-builder.cc |
| +++ b/src/compiler/access-builder.cc |
| @@ -549,6 +549,54 @@ FieldAccess AccessBuilder::ForJSGlobalObjectNativeContext() { |
| } |
| // static |
| +FieldAccess AccessBuilder::ForJSArrayIteratorObject() { |
| + FieldAccess access = {kTaggedBase, |
| + JSArrayIterator::kIteratedObjectOffset, |
| + Handle<Name>(), |
| + Type::Receiver(), |
| + MachineType::TaggedPointer(), |
| + kPointerWriteBarrier}; |
| + return access; |
| +} |
| + |
| +// static |
| +FieldAccess AccessBuilder::ForJSArrayIteratorIndex(InstanceType instance_type, |
| + ElementsKind elements_kind) { |
| + FieldAccess access = {kTaggedBase, |
| + JSArrayIterator::kIteratedObjectOffset, |
| + Handle<Name>(), |
| + TypeCache::Get().kPositiveSafeInteger, |
|
Benedikt Meurer
2016/11/08 05:29:48
Actually it can be any positive integer, not only
caitp
2016/11/08 06:37:36
I think `ToLength(<array length>)` should restrict
|
| + MachineType::TaggedSigned(), |
|
Benedikt Meurer
2016/11/08 05:29:48
The general type is MachineType::AnyTagged()
caitp
2016/11/08 06:37:36
Acknowledged.
|
| + kFullWriteBarrier}; |
| + if (instance_type == JS_ARRAY_TYPE) { |
| + if (IsFastDoubleElementsKind(elements_kind)) { |
| + access.type = TypeCache::Get().kFixedDoubleArrayLengthType; |
| + access.write_barrier_kind = kNoWriteBarrier; |
|
Benedikt Meurer
2016/11/08 05:29:48
Set access.machine_type = MachineType::TaggedSigne
caitp
2016/11/08 06:37:35
Acknowledged.
|
| + } else if (IsFastElementsKind(elements_kind)) { |
| + access.type = TypeCache::Get().kFixedArrayLengthType; |
| + access.write_barrier_kind = kNoWriteBarrier; |
|
Benedikt Meurer
2016/11/08 05:29:48
Set access.machine_type = MachineType::TaggedSigne
caitp
2016/11/08 06:37:36
Acknowledged.
|
| + } else { |
| + access.type = TypeCache::Get().kJSArrayLengthType; |
| + } |
| + } else if (instance_type == JS_TYPED_ARRAY_TYPE) { |
| + access.type = TypeCache::Get().kJSTypedArrayLengthType; |
|
Benedikt Meurer
2016/11/08 05:29:48
Set access.machine_type = MachineType::TaggedSigne
caitp
2016/11/08 06:37:36
Acknowledged.
|
| + 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>(), |