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

Side by Side Diff: src/bootstrapper.cc

Issue 236143002: ES6: Add support for Map.prototype.forEach and Set.prototype.forEach (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: static-ify Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "bootstrapper.h" 5 #include "bootstrapper.h"
6 6
7 #include "accessors.h" 7 #include "accessors.h"
8 #include "isolate-inl.h" 8 #include "isolate-inl.h"
9 #include "natives.h" 9 #include "natives.h"
10 #include "snapshot.h" 10 #include "snapshot.h"
(...skipping 1339 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 native_context()->set_strict_generator_function_map( 1350 native_context()->set_strict_generator_function_map(
1351 *strict_mode_generator_function_map); 1351 *strict_mode_generator_function_map);
1352 1352
1353 Handle<JSFunction> object_function(native_context()->object_function()); 1353 Handle<JSFunction> object_function(native_context()->object_function());
1354 Handle<Map> generator_object_prototype_map = Map::Create( 1354 Handle<Map> generator_object_prototype_map = Map::Create(
1355 object_function, 0); 1355 object_function, 0);
1356 generator_object_prototype_map->set_prototype( 1356 generator_object_prototype_map->set_prototype(
1357 *generator_object_prototype); 1357 *generator_object_prototype);
1358 native_context()->set_generator_object_prototype_map( 1358 native_context()->set_generator_object_prototype_map(
1359 *generator_object_prototype_map); 1359 *generator_object_prototype_map);
1360 ASSERT(object_function->initial_map()->inobject_properties() == 0);
1361 }
1360 1362
1361 // Create a map for generator result objects. 1363 if (FLAG_harmony_collections || FLAG_harmony_generators) {
1362 ASSERT(object_function->initial_map()->inobject_properties() == 0); 1364 // Collection forEach uses an iterator result object.
1365 // Generators return iteraror result objects.
1366
1363 STATIC_ASSERT(JSGeneratorObject::kResultPropertyCount == 2); 1367 STATIC_ASSERT(JSGeneratorObject::kResultPropertyCount == 2);
1364 Handle<Map> generator_result_map = Map::Create( 1368 Handle<JSFunction> object_function(native_context()->object_function());
1369 Handle<Map> iterator_result_map = Map::Create(
1365 object_function, JSGeneratorObject::kResultPropertyCount); 1370 object_function, JSGeneratorObject::kResultPropertyCount);
1366 ASSERT(generator_result_map->inobject_properties() == 1371 ASSERT(iterator_result_map->inobject_properties() ==
1367 JSGeneratorObject::kResultPropertyCount); 1372 JSGeneratorObject::kResultPropertyCount);
1368 Map::EnsureDescriptorSlack( 1373 Map::EnsureDescriptorSlack(
1369 generator_result_map, JSGeneratorObject::kResultPropertyCount); 1374 iterator_result_map, JSGeneratorObject::kResultPropertyCount);
1370 1375
1371 Handle<String> value_string = factory()->InternalizeOneByteString( 1376 Handle<String> value_string = factory()->InternalizeOneByteString(
1372 STATIC_ASCII_VECTOR("value")); 1377 STATIC_ASCII_VECTOR("value"));
1373 FieldDescriptor value_descr(value_string, 1378 FieldDescriptor value_descr(value_string,
1374 JSGeneratorObject::kResultValuePropertyIndex, 1379 JSGeneratorObject::kResultValuePropertyIndex,
1375 NONE, 1380 NONE,
1376 Representation::Tagged()); 1381 Representation::Tagged());
1377 generator_result_map->AppendDescriptor(&value_descr); 1382 iterator_result_map->AppendDescriptor(&value_descr);
1378 1383
1379 Handle<String> done_string = factory()->InternalizeOneByteString( 1384 Handle<String> done_string = factory()->InternalizeOneByteString(
1380 STATIC_ASCII_VECTOR("done")); 1385 STATIC_ASCII_VECTOR("done"));
1381 FieldDescriptor done_descr(done_string, 1386 FieldDescriptor done_descr(done_string,
1382 JSGeneratorObject::kResultDonePropertyIndex, 1387 JSGeneratorObject::kResultDonePropertyIndex,
1383 NONE, 1388 NONE,
1384 Representation::Tagged()); 1389 Representation::Tagged());
1385 generator_result_map->AppendDescriptor(&done_descr); 1390 iterator_result_map->AppendDescriptor(&done_descr);
1386 1391
1387 generator_result_map->set_unused_property_fields(0); 1392 iterator_result_map->set_unused_property_fields(0);
1388 ASSERT_EQ(JSGeneratorObject::kResultSize, 1393 ASSERT_EQ(JSGeneratorObject::kResultSize,
1389 generator_result_map->instance_size()); 1394 iterator_result_map->instance_size());
1390 native_context()->set_generator_result_map(*generator_result_map); 1395 native_context()->set_iterator_result_map(*iterator_result_map);
1391 } 1396 }
1392 } 1397 }
1393 1398
1394 1399
1395 bool Genesis::CompileBuiltin(Isolate* isolate, int index) { 1400 bool Genesis::CompileBuiltin(Isolate* isolate, int index) {
1396 Vector<const char> name = Natives::GetScriptName(index); 1401 Vector<const char> name = Natives::GetScriptName(index);
1397 Handle<String> source_code = 1402 Handle<String> source_code =
1398 isolate->bootstrapper()->NativesSourceLookup(index); 1403 isolate->bootstrapper()->NativesSourceLookup(index);
1399 return CompileNative(isolate, name, source_code); 1404 return CompileNative(isolate, name, source_code);
1400 } 1405 }
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after
2688 return from + sizeof(NestingCounterType); 2693 return from + sizeof(NestingCounterType);
2689 } 2694 }
2690 2695
2691 2696
2692 // Called when the top-level V8 mutex is destroyed. 2697 // Called when the top-level V8 mutex is destroyed.
2693 void Bootstrapper::FreeThreadResources() { 2698 void Bootstrapper::FreeThreadResources() {
2694 ASSERT(!IsActive()); 2699 ASSERT(!IsActive());
2695 } 2700 }
2696 2701
2697 } } // namespace v8::internal 2702 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm64/full-codegen-arm64.cc ('k') | src/collection.js » ('j') | src/factory.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698