OLD | NEW |
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 1303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1314 | 1314 |
1315 if (FLAG_harmony_typed_arrays) { | 1315 if (FLAG_harmony_typed_arrays) { |
1316 { // -- A r r a y B u f f e r | 1316 { // -- A r r a y B u f f e r |
1317 Handle<JSObject> prototype = | 1317 Handle<JSObject> prototype = |
1318 factory()->NewJSObject(isolate()->object_function(), TENURED); | 1318 factory()->NewJSObject(isolate()->object_function(), TENURED); |
1319 InstallFunction(global, "__ArrayBuffer", JS_ARRAY_BUFFER_TYPE, | 1319 InstallFunction(global, "__ArrayBuffer", JS_ARRAY_BUFFER_TYPE, |
1320 JSArrayBuffer::kSize, prototype, | 1320 JSArrayBuffer::kSize, prototype, |
1321 Builtins::kIllegal, true); | 1321 Builtins::kIllegal, true); |
1322 } | 1322 } |
1323 } | 1323 } |
| 1324 |
| 1325 if (FLAG_harmony_generators) { |
| 1326 // Create generator meta-objects and install them on the builtins object. |
| 1327 Handle<JSObject> builtins(native_context()->builtins()); |
| 1328 Handle<JSObject> generator_object_prototype = |
| 1329 factory()->NewJSObject(isolate()->object_function(), TENURED); |
| 1330 Handle<JSFunction> generator_function_prototype = |
| 1331 InstallFunction(builtins, "GeneratorFunctionPrototype", |
| 1332 JS_FUNCTION_TYPE, JSFunction::kHeaderSize, |
| 1333 generator_object_prototype, Builtins::kIllegal, |
| 1334 false); |
| 1335 InstallFunction(builtins, "GeneratorFunction", |
| 1336 JS_FUNCTION_TYPE, JSFunction::kSize, |
| 1337 generator_function_prototype, Builtins::kIllegal, |
| 1338 false); |
| 1339 |
| 1340 // Create maps for generator functions and their prototypes. Store those |
| 1341 // maps in the native context. |
| 1342 Handle<Map> function_map(native_context()->function_map()); |
| 1343 Handle<Map> generator_function_map = factory()->CopyMap(function_map); |
| 1344 generator_function_map->set_prototype(*generator_function_prototype); |
| 1345 native_context()->set_generator_function_map(*generator_function_map); |
| 1346 |
| 1347 Handle<Map> strict_mode_function_map( |
| 1348 native_context()->strict_mode_function_map()); |
| 1349 Handle<Map> strict_mode_generator_function_map = factory()->CopyMap( |
| 1350 strict_mode_function_map); |
| 1351 strict_mode_generator_function_map->set_prototype( |
| 1352 *generator_function_prototype); |
| 1353 native_context()->set_strict_mode_generator_function_map( |
| 1354 *strict_mode_generator_function_map); |
| 1355 |
| 1356 Handle<Map> object_map(native_context()->object_function()->initial_map()); |
| 1357 Handle<Map> generator_object_prototype_map = factory()->CopyMap( |
| 1358 object_map, 0); |
| 1359 generator_object_prototype_map->set_prototype( |
| 1360 *generator_object_prototype); |
| 1361 native_context()->set_generator_object_prototype_map( |
| 1362 *generator_object_prototype_map); |
| 1363 } |
1324 } | 1364 } |
1325 | 1365 |
1326 | 1366 |
1327 bool Genesis::CompileBuiltin(Isolate* isolate, int index) { | 1367 bool Genesis::CompileBuiltin(Isolate* isolate, int index) { |
1328 Vector<const char> name = Natives::GetScriptName(index); | 1368 Vector<const char> name = Natives::GetScriptName(index); |
1329 Handle<String> source_code = | 1369 Handle<String> source_code = |
1330 isolate->bootstrapper()->NativesSourceLookup(index); | 1370 isolate->bootstrapper()->NativesSourceLookup(index); |
1331 return CompileNative(isolate, name, source_code); | 1371 return CompileNative(isolate, name, source_code); |
1332 } | 1372 } |
1333 | 1373 |
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1926 if (FLAG_harmony_observation && | 1966 if (FLAG_harmony_observation && |
1927 strcmp(ExperimentalNatives::GetScriptName(i).start(), | 1967 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
1928 "native object-observe.js") == 0) { | 1968 "native object-observe.js") == 0) { |
1929 if (!CompileExperimentalBuiltin(isolate(), i)) return false; | 1969 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
1930 } | 1970 } |
1931 if (FLAG_harmony_typed_arrays && | 1971 if (FLAG_harmony_typed_arrays && |
1932 strcmp(ExperimentalNatives::GetScriptName(i).start(), | 1972 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
1933 "native typedarray.js") == 0) { | 1973 "native typedarray.js") == 0) { |
1934 if (!CompileExperimentalBuiltin(isolate(), i)) return false; | 1974 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
1935 } | 1975 } |
| 1976 if (FLAG_harmony_generators && |
| 1977 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
| 1978 "native generator.js") == 0) { |
| 1979 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
| 1980 } |
1936 } | 1981 } |
1937 | 1982 |
1938 InstallExperimentalNativeFunctions(); | 1983 InstallExperimentalNativeFunctions(); |
1939 | 1984 |
1940 return true; | 1985 return true; |
1941 } | 1986 } |
1942 | 1987 |
1943 | 1988 |
1944 static Handle<JSObject> ResolveBuiltinIdHolder( | 1989 static Handle<JSObject> ResolveBuiltinIdHolder( |
1945 Handle<Context> native_context, | 1990 Handle<Context> native_context, |
(...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2510 return from + sizeof(NestingCounterType); | 2555 return from + sizeof(NestingCounterType); |
2511 } | 2556 } |
2512 | 2557 |
2513 | 2558 |
2514 // Called when the top-level V8 mutex is destroyed. | 2559 // Called when the top-level V8 mutex is destroyed. |
2515 void Bootstrapper::FreeThreadResources() { | 2560 void Bootstrapper::FreeThreadResources() { |
2516 ASSERT(!IsActive()); | 2561 ASSERT(!IsActive()); |
2517 } | 2562 } |
2518 | 2563 |
2519 } } // namespace v8::internal | 2564 } } // namespace v8::internal |
OLD | NEW |