Chromium Code Reviews| Index: src/bootstrapper.cc |
| diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
| index 1edf5ceb9d319b27c694afebee819fe436fdeecf..615367f1ff19368fc5c92e20bc931df3ca23a01d 100644 |
| --- a/src/bootstrapper.cc |
| +++ b/src/bootstrapper.cc |
| @@ -1385,6 +1385,33 @@ void Genesis::InitializeExperimentalGlobal() { |
| *generator_object_prototype); |
| native_context()->set_generator_object_prototype_map( |
| *generator_object_prototype_map); |
| + |
| + // Create a map for iterator result objects. |
| + ASSERT(object_map->inobject_properties() == 0); |
| + STATIC_ASSERT(JSGeneratorObject::kResultPropertyCount == 2); |
| + Handle<Map> iterator_result_map = factory()->CopyMap(object_map, 2); |
| + ASSERT(iterator_result_map->inobject_properties() == 2); |
| + |
| + Handle<DescriptorArray> descriptors = factory()->NewDescriptorArray(0, 2); |
| + DescriptorArray::WhitenessWitness witness(*descriptors); |
| + iterator_result_map->set_instance_descriptors(*descriptors); |
| + |
| + STATIC_ASSERT(JSGeneratorObject::kResultValuePropertyIndex == 0); |
|
Michael Starzinger
2013/05/06 11:22:32
Is there a particular reason why cannot use the in
|
| + Handle<String> value_string = factory()->InternalizeOneByteString( |
| + STATIC_ASCII_VECTOR("value")); |
| + FieldDescriptor value_descriptor(*value_string, 0, NONE, |
| + Representation::Tagged()); |
| + iterator_result_map->AppendDescriptor(&value_descriptor, witness); |
| + |
| + STATIC_ASSERT(JSGeneratorObject::kResultDonePropertyIndex == 1); |
| + Handle<String> done_string = factory()->InternalizeOneByteString( |
| + STATIC_ASCII_VECTOR("done")); |
| + FieldDescriptor done_descriptor(*done_string, 1, NONE, |
| + Representation::Tagged()); |
| + iterator_result_map->AppendDescriptor(&done_descriptor, witness); |
| + |
| + iterator_result_map->set_unused_property_fields(0); |
| + native_context()->set_iterator_result_map(*iterator_result_map); |
| } |
| } |