Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: src/bootstrapper.cc

Issue 13870007: Generators return boxed values (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: Rebase; add needed write barrier Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/contexts.h » ('j') | src/contexts.h » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
}
« no previous file with comments | « src/arm/full-codegen-arm.cc ('k') | src/contexts.h » ('j') | src/contexts.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698