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

Side by Side Diff: src/bootstrapper.cc

Issue 13192004: arrange to create prototypes for generators (Closed) Base URL: git://github.com/v8/v8.git@master
Patch Set: Generators JS runtime to separate file, to avoid overhead when no --harmony-generators 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 1408 matching lines...) Expand 10 before | Expand all | Expand 10 after
1419 ? top_context->builtins() 1419 ? top_context->builtins()
1420 : top_context->global_object(), 1420 : top_context->global_object(),
1421 isolate); 1421 isolate);
1422 bool has_pending_exception; 1422 bool has_pending_exception;
1423 Execution::Call(fun, receiver, 0, NULL, &has_pending_exception); 1423 Execution::Call(fun, receiver, 0, NULL, &has_pending_exception);
1424 if (has_pending_exception) return false; 1424 if (has_pending_exception) return false;
1425 return true; 1425 return true;
1426 } 1426 }
1427 1427
1428 1428
1429 #define LOOKUP_NATIVE(Type, name, var) \
1430 Handle<String> var##_name = \
1431 factory()->NewStringFromOneByte(STATIC_ASCII_VECTOR(name)); \
1432 Object* var##_obj = \
1433 native_context()->builtins()->GetPropertyNoExceptionThrown( \
1434 *var##_name); \
1435 Handle<Type> var(Type::cast(var##_obj));
1436
1429 #define INSTALL_NATIVE(Type, name, var) \ 1437 #define INSTALL_NATIVE(Type, name, var) \
1430 Handle<String> var##_name = \ 1438 Handle<String> var##_name = \
1431 factory()->InternalizeOneByteString(STATIC_ASCII_VECTOR(name)); \ 1439 factory()->InternalizeOneByteString(STATIC_ASCII_VECTOR(name)); \
1432 Object* var##_native = \ 1440 Object* var##_native = \
1433 native_context()->builtins()->GetPropertyNoExceptionThrown( \ 1441 native_context()->builtins()->GetPropertyNoExceptionThrown( \
1434 *var##_name); \ 1442 *var##_name); \
1435 native_context()->set_##var(Type::cast(var##_native)); 1443 native_context()->set_##var(Type::cast(var##_native));
1436 1444
1437 1445
1438 void Genesis::InstallNativeFunctions() { 1446 void Genesis::InstallNativeFunctions() {
(...skipping 21 matching lines...) Expand all
1460 INSTALL_NATIVE(JSFunction, "DerivedHasTrap", derived_has_trap); 1468 INSTALL_NATIVE(JSFunction, "DerivedHasTrap", derived_has_trap);
1461 INSTALL_NATIVE(JSFunction, "DerivedGetTrap", derived_get_trap); 1469 INSTALL_NATIVE(JSFunction, "DerivedGetTrap", derived_get_trap);
1462 INSTALL_NATIVE(JSFunction, "DerivedSetTrap", derived_set_trap); 1470 INSTALL_NATIVE(JSFunction, "DerivedSetTrap", derived_set_trap);
1463 INSTALL_NATIVE(JSFunction, "ProxyEnumerate", proxy_enumerate); 1471 INSTALL_NATIVE(JSFunction, "ProxyEnumerate", proxy_enumerate);
1464 } 1472 }
1465 if (FLAG_harmony_observation) { 1473 if (FLAG_harmony_observation) {
1466 INSTALL_NATIVE(JSFunction, "NotifyChange", observers_notify_change); 1474 INSTALL_NATIVE(JSFunction, "NotifyChange", observers_notify_change);
1467 INSTALL_NATIVE(JSFunction, "DeliverChangeRecords", 1475 INSTALL_NATIVE(JSFunction, "DeliverChangeRecords",
1468 observers_deliver_changes); 1476 observers_deliver_changes);
1469 } 1477 }
1478 if (FLAG_harmony_generators) {
rossberg 2013/04/09 16:44:14 Why do these have to be created in a different man
wingo 2013/04/10 14:28:52 I have taken a look at this and I don't catch your
wingo 2013/04/10 14:44:28 I think I misunderstood and found my error. Pleas
1479 HandleScope scope(isolate());
1480 LOOKUP_NATIVE(JSFunction, "GeneratorFunctionPrototype",
1481 generator_function_prototype);
1482 LOOKUP_NATIVE(JSObject, "GeneratorIteratorPrototype",
1483 generator_iterator_prototype);
1484 Handle<Map> function_map(native_context()->function_map());
1485 Handle<Map> strict_mode_function_map(
1486 native_context()->strict_mode_function_map());
1487 Handle<Map> object_map(native_context()->object_function()->initial_map());
1488
1489 Handle<Map> generator_function_map = factory()->CopyMap(function_map);
1490 generator_function_map->set_prototype(*generator_function_prototype);
1491 native_context()->set_generator_function_map(*generator_function_map);
1492
1493 Handle<Map> strict_mode_generator_function_map = factory()->CopyMap(
1494 strict_mode_function_map);
1495 strict_mode_generator_function_map->set_prototype(
1496 *generator_function_prototype);
1497 native_context()->set_strict_mode_generator_function_map(
1498 *strict_mode_generator_function_map);
1499
1500 Handle<Map> generator_iterator_prototype_map = factory()->CopyMap(
1501 object_map, 0);
1502 generator_iterator_prototype_map->set_prototype(
1503 *generator_iterator_prototype);
1504 native_context()->set_generator_iterator_prototype_map(
1505 *generator_iterator_prototype_map);
1506 }
1470 } 1507 }
1471 1508
1472 #undef INSTALL_NATIVE 1509 #undef INSTALL_NATIVE
1473 1510
1474 1511
1475 Handle<JSFunction> Genesis::InstallInternalArray( 1512 Handle<JSFunction> Genesis::InstallInternalArray(
1476 Handle<JSBuiltinsObject> builtins, 1513 Handle<JSBuiltinsObject> builtins,
1477 const char* name, 1514 const char* name,
1478 ElementsKind elements_kind) { 1515 ElementsKind elements_kind) {
1479 // --- I n t e r n a l A r r a y --- 1516 // --- I n t e r n a l A r r a y ---
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
1926 if (FLAG_harmony_observation && 1963 if (FLAG_harmony_observation &&
1927 strcmp(ExperimentalNatives::GetScriptName(i).start(), 1964 strcmp(ExperimentalNatives::GetScriptName(i).start(),
1928 "native object-observe.js") == 0) { 1965 "native object-observe.js") == 0) {
1929 if (!CompileExperimentalBuiltin(isolate(), i)) return false; 1966 if (!CompileExperimentalBuiltin(isolate(), i)) return false;
1930 } 1967 }
1931 if (FLAG_harmony_typed_arrays && 1968 if (FLAG_harmony_typed_arrays &&
1932 strcmp(ExperimentalNatives::GetScriptName(i).start(), 1969 strcmp(ExperimentalNatives::GetScriptName(i).start(),
1933 "native typedarray.js") == 0) { 1970 "native typedarray.js") == 0) {
1934 if (!CompileExperimentalBuiltin(isolate(), i)) return false; 1971 if (!CompileExperimentalBuiltin(isolate(), i)) return false;
1935 } 1972 }
1973 if (FLAG_harmony_generators &&
1974 strcmp(ExperimentalNatives::GetScriptName(i).start(),
1975 "native generators.js") == 0) {
1976 if (!CompileExperimentalBuiltin(isolate(), i)) return false;
1977 }
1936 } 1978 }
1937 1979
1938 InstallExperimentalNativeFunctions(); 1980 InstallExperimentalNativeFunctions();
1939 1981
1940 return true; 1982 return true;
1941 } 1983 }
1942 1984
1943 1985
1944 static Handle<JSObject> ResolveBuiltinIdHolder( 1986 static Handle<JSObject> ResolveBuiltinIdHolder(
1945 Handle<Context> native_context, 1987 Handle<Context> native_context,
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after
2510 return from + sizeof(NestingCounterType); 2552 return from + sizeof(NestingCounterType);
2511 } 2553 }
2512 2554
2513 2555
2514 // Called when the top-level V8 mutex is destroyed. 2556 // Called when the top-level V8 mutex is destroyed.
2515 void Bootstrapper::FreeThreadResources() { 2557 void Bootstrapper::FreeThreadResources() {
2516 ASSERT(!IsActive()); 2558 ASSERT(!IsActive());
2517 } 2559 }
2518 2560
2519 } } // namespace v8::internal 2561 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/arm/lithium-codegen-arm.cc ('k') | src/contexts.h » ('j') | src/factory.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698