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..a92e834d52158cb990eeb2a3139976cbf620ac2c 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::Receiver(), |
|
Benedikt Meurer
2016/11/08 08:30:00
Since you store undefined when done, this type mus
caitp
2016/11/08 17:53:07
I had originally added a ReceiverOrUndefined defin
|
| + 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, |
| + 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>(), |