| 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 1046 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1057 Handle<Object>(native_context()->initial_object_prototype(), isolate)); | 1057 Handle<Object>(native_context()->initial_object_prototype(), isolate)); |
| 1058 cons->SetInstanceClassName(*name); | 1058 cons->SetInstanceClassName(*name); |
| 1059 Handle<JSObject> json_object = factory->NewJSObject(cons, TENURED); | 1059 Handle<JSObject> json_object = factory->NewJSObject(cons, TENURED); |
| 1060 ASSERT(json_object->IsJSObject()); | 1060 ASSERT(json_object->IsJSObject()); |
| 1061 CHECK_NOT_EMPTY_HANDLE(isolate, | 1061 CHECK_NOT_EMPTY_HANDLE(isolate, |
| 1062 JSObject::SetLocalPropertyIgnoreAttributes( | 1062 JSObject::SetLocalPropertyIgnoreAttributes( |
| 1063 global, name, json_object, DONT_ENUM)); | 1063 global, name, json_object, DONT_ENUM)); |
| 1064 native_context()->set_json_object(*json_object); | 1064 native_context()->set_json_object(*json_object); |
| 1065 } | 1065 } |
| 1066 | 1066 |
| 1067 { // -- A r r a y B u f f e r | |
| 1068 Handle<JSFunction> array_buffer_fun = | |
| 1069 InstallFunction( | |
| 1070 global, "ArrayBuffer", JS_ARRAY_BUFFER_TYPE, | |
| 1071 JSArrayBuffer::kSizeWithInternalFields, | |
| 1072 isolate->initial_object_prototype(), | |
| 1073 Builtins::kIllegal, true, true); | |
| 1074 native_context()->set_array_buffer_fun(*array_buffer_fun); | |
| 1075 } | |
| 1076 | |
| 1077 { // -- T y p e d A r r a y s | |
| 1078 Handle<JSFunction> int8_fun = InstallTypedArray("Int8Array", | |
| 1079 EXTERNAL_BYTE_ELEMENTS); | |
| 1080 native_context()->set_int8_array_fun(*int8_fun); | |
| 1081 Handle<JSFunction> uint8_fun = InstallTypedArray("Uint8Array", | |
| 1082 EXTERNAL_UNSIGNED_BYTE_ELEMENTS); | |
| 1083 native_context()->set_uint8_array_fun(*uint8_fun); | |
| 1084 Handle<JSFunction> int16_fun = InstallTypedArray("Int16Array", | |
| 1085 EXTERNAL_SHORT_ELEMENTS); | |
| 1086 native_context()->set_int16_array_fun(*int16_fun); | |
| 1087 Handle<JSFunction> uint16_fun = InstallTypedArray("Uint16Array", | |
| 1088 EXTERNAL_UNSIGNED_SHORT_ELEMENTS); | |
| 1089 native_context()->set_uint16_array_fun(*uint16_fun); | |
| 1090 Handle<JSFunction> int32_fun = InstallTypedArray("Int32Array", | |
| 1091 EXTERNAL_INT_ELEMENTS); | |
| 1092 native_context()->set_int32_array_fun(*int32_fun); | |
| 1093 Handle<JSFunction> uint32_fun = InstallTypedArray("Uint32Array", | |
| 1094 EXTERNAL_UNSIGNED_INT_ELEMENTS); | |
| 1095 native_context()->set_uint32_array_fun(*uint32_fun); | |
| 1096 Handle<JSFunction> float_fun = InstallTypedArray("Float32Array", | |
| 1097 EXTERNAL_FLOAT_ELEMENTS); | |
| 1098 native_context()->set_float_array_fun(*float_fun); | |
| 1099 Handle<JSFunction> double_fun = InstallTypedArray("Float64Array", | |
| 1100 EXTERNAL_DOUBLE_ELEMENTS); | |
| 1101 native_context()->set_double_array_fun(*double_fun); | |
| 1102 Handle<JSFunction> uint8c_fun = InstallTypedArray("Uint8ClampedArray", | |
| 1103 EXTERNAL_PIXEL_ELEMENTS); | |
| 1104 native_context()->set_uint8c_array_fun(*uint8c_fun); | |
| 1105 | |
| 1106 Handle<JSFunction> data_view_fun = | |
| 1107 InstallFunction( | |
| 1108 global, "DataView", JS_DATA_VIEW_TYPE, | |
| 1109 JSDataView::kSizeWithInternalFields, | |
| 1110 isolate->initial_object_prototype(), | |
| 1111 Builtins::kIllegal, true, true); | |
| 1112 native_context()->set_data_view_fun(*data_view_fun); | |
| 1113 } | |
| 1114 | |
| 1115 { // --- arguments_boilerplate_ | 1067 { // --- arguments_boilerplate_ |
| 1116 // Make sure we can recognize argument objects at runtime. | 1068 // Make sure we can recognize argument objects at runtime. |
| 1117 // This is done by introducing an anonymous function with | 1069 // This is done by introducing an anonymous function with |
| 1118 // class_name equals 'Arguments'. | 1070 // class_name equals 'Arguments'. |
| 1119 Handle<String> arguments_string = factory->InternalizeOneByteString( | 1071 Handle<String> arguments_string = factory->InternalizeOneByteString( |
| 1120 STATIC_ASCII_VECTOR("Arguments")); | 1072 STATIC_ASCII_VECTOR("Arguments")); |
| 1121 Handle<Code> code = Handle<Code>( | 1073 Handle<Code> code = Handle<Code>( |
| 1122 isolate->builtins()->builtin(Builtins::kIllegal)); | 1074 isolate->builtins()->builtin(Builtins::kIllegal)); |
| 1123 Handle<JSObject> prototype = | 1075 Handle<JSObject> prototype = |
| 1124 Handle<JSObject>( | 1076 Handle<JSObject>( |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1372 isolate()->initial_object_prototype(), | 1324 isolate()->initial_object_prototype(), |
| 1373 Builtins::kIllegal, true, true); | 1325 Builtins::kIllegal, true, true); |
| 1374 } | 1326 } |
| 1375 { // -- W e a k S e t | 1327 { // -- W e a k S e t |
| 1376 InstallFunction(global, "WeakSet", JS_WEAK_SET_TYPE, JSWeakSet::kSize, | 1328 InstallFunction(global, "WeakSet", JS_WEAK_SET_TYPE, JSWeakSet::kSize, |
| 1377 isolate()->initial_object_prototype(), | 1329 isolate()->initial_object_prototype(), |
| 1378 Builtins::kIllegal, true, true); | 1330 Builtins::kIllegal, true, true); |
| 1379 } | 1331 } |
| 1380 } | 1332 } |
| 1381 | 1333 |
| 1334 if (FLAG_harmony_array_buffer) { |
| 1335 // -- A r r a y B u f f e r |
| 1336 Handle<JSFunction> array_buffer_fun = |
| 1337 InstallFunction( |
| 1338 global, "ArrayBuffer", JS_ARRAY_BUFFER_TYPE, |
| 1339 JSArrayBuffer::kSizeWithInternalFields, |
| 1340 isolate()->initial_object_prototype(), |
| 1341 Builtins::kIllegal, true, true); |
| 1342 native_context()->set_array_buffer_fun(*array_buffer_fun); |
| 1343 } |
| 1344 |
| 1345 if (FLAG_harmony_typed_arrays) { |
| 1346 // -- T y p e d A r r a y s |
| 1347 Handle<JSFunction> int8_fun = InstallTypedArray("Int8Array", |
| 1348 EXTERNAL_BYTE_ELEMENTS); |
| 1349 native_context()->set_int8_array_fun(*int8_fun); |
| 1350 Handle<JSFunction> uint8_fun = InstallTypedArray("Uint8Array", |
| 1351 EXTERNAL_UNSIGNED_BYTE_ELEMENTS); |
| 1352 native_context()->set_uint8_array_fun(*uint8_fun); |
| 1353 Handle<JSFunction> int16_fun = InstallTypedArray("Int16Array", |
| 1354 EXTERNAL_SHORT_ELEMENTS); |
| 1355 native_context()->set_int16_array_fun(*int16_fun); |
| 1356 Handle<JSFunction> uint16_fun = InstallTypedArray("Uint16Array", |
| 1357 EXTERNAL_UNSIGNED_SHORT_ELEMENTS); |
| 1358 native_context()->set_uint16_array_fun(*uint16_fun); |
| 1359 Handle<JSFunction> int32_fun = InstallTypedArray("Int32Array", |
| 1360 EXTERNAL_INT_ELEMENTS); |
| 1361 native_context()->set_int32_array_fun(*int32_fun); |
| 1362 Handle<JSFunction> uint32_fun = InstallTypedArray("Uint32Array", |
| 1363 EXTERNAL_UNSIGNED_INT_ELEMENTS); |
| 1364 native_context()->set_uint32_array_fun(*uint32_fun); |
| 1365 Handle<JSFunction> float_fun = InstallTypedArray("Float32Array", |
| 1366 EXTERNAL_FLOAT_ELEMENTS); |
| 1367 native_context()->set_float_array_fun(*float_fun); |
| 1368 Handle<JSFunction> double_fun = InstallTypedArray("Float64Array", |
| 1369 EXTERNAL_DOUBLE_ELEMENTS); |
| 1370 native_context()->set_double_array_fun(*double_fun); |
| 1371 Handle<JSFunction> uint8c_fun = InstallTypedArray("Uint8ClampedArray", |
| 1372 EXTERNAL_PIXEL_ELEMENTS); |
| 1373 native_context()->set_uint8c_array_fun(*uint8c_fun); |
| 1374 |
| 1375 Handle<JSFunction> data_view_fun = |
| 1376 InstallFunction( |
| 1377 global, "DataView", JS_DATA_VIEW_TYPE, |
| 1378 JSDataView::kSizeWithInternalFields, |
| 1379 isolate()->initial_object_prototype(), |
| 1380 Builtins::kIllegal, true, true); |
| 1381 native_context()->set_data_view_fun(*data_view_fun); |
| 1382 } |
| 1383 |
| 1382 if (FLAG_harmony_generators) { | 1384 if (FLAG_harmony_generators) { |
| 1383 // Create generator meta-objects and install them on the builtins object. | 1385 // Create generator meta-objects and install them on the builtins object. |
| 1384 Handle<JSObject> builtins(native_context()->builtins()); | 1386 Handle<JSObject> builtins(native_context()->builtins()); |
| 1385 Handle<JSObject> generator_object_prototype = | 1387 Handle<JSObject> generator_object_prototype = |
| 1386 factory()->NewJSObject(isolate()->object_function(), TENURED); | 1388 factory()->NewJSObject(isolate()->object_function(), TENURED); |
| 1387 Handle<JSFunction> generator_function_prototype = | 1389 Handle<JSFunction> generator_function_prototype = |
| 1388 InstallFunction(builtins, "GeneratorFunctionPrototype", | 1390 InstallFunction(builtins, "GeneratorFunctionPrototype", |
| 1389 JS_FUNCTION_TYPE, JSFunction::kHeaderSize, | 1391 JS_FUNCTION_TYPE, JSFunction::kHeaderSize, |
| 1390 generator_object_prototype, Builtins::kIllegal, | 1392 generator_object_prototype, Builtins::kIllegal, |
| 1391 false, false); | 1393 false, false); |
| (...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2051 if (FLAG_harmony_collections && | 2053 if (FLAG_harmony_collections && |
| 2052 strcmp(ExperimentalNatives::GetScriptName(i).start(), | 2054 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
| 2053 "native collection.js") == 0) { | 2055 "native collection.js") == 0) { |
| 2054 if (!CompileExperimentalBuiltin(isolate(), i)) return false; | 2056 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
| 2055 } | 2057 } |
| 2056 if (FLAG_harmony_observation && | 2058 if (FLAG_harmony_observation && |
| 2057 strcmp(ExperimentalNatives::GetScriptName(i).start(), | 2059 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
| 2058 "native object-observe.js") == 0) { | 2060 "native object-observe.js") == 0) { |
| 2059 if (!CompileExperimentalBuiltin(isolate(), i)) return false; | 2061 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
| 2060 } | 2062 } |
| 2063 if (FLAG_harmony_array_buffer && |
| 2064 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
| 2065 "native arraybuffer.js") == 0) { |
| 2066 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
| 2067 } |
| 2068 if (FLAG_harmony_typed_arrays && |
| 2069 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
| 2070 "native typedarray.js") == 0) { |
| 2071 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
| 2072 } |
| 2061 if (FLAG_harmony_generators && | 2073 if (FLAG_harmony_generators && |
| 2062 strcmp(ExperimentalNatives::GetScriptName(i).start(), | 2074 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
| 2063 "native generator.js") == 0) { | 2075 "native generator.js") == 0) { |
| 2064 if (!CompileExperimentalBuiltin(isolate(), i)) return false; | 2076 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
| 2065 } | 2077 } |
| 2066 if (FLAG_harmony_iteration && | 2078 if (FLAG_harmony_iteration && |
| 2067 strcmp(ExperimentalNatives::GetScriptName(i).start(), | 2079 strcmp(ExperimentalNatives::GetScriptName(i).start(), |
| 2068 "native array-iterator.js") == 0) { | 2080 "native array-iterator.js") == 0) { |
| 2069 if (!CompileExperimentalBuiltin(isolate(), i)) return false; | 2081 if (!CompileExperimentalBuiltin(isolate(), i)) return false; |
| 2070 } | 2082 } |
| (...skipping 602 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2673 return from + sizeof(NestingCounterType); | 2685 return from + sizeof(NestingCounterType); |
| 2674 } | 2686 } |
| 2675 | 2687 |
| 2676 | 2688 |
| 2677 // Called when the top-level V8 mutex is destroyed. | 2689 // Called when the top-level V8 mutex is destroyed. |
| 2678 void Bootstrapper::FreeThreadResources() { | 2690 void Bootstrapper::FreeThreadResources() { |
| 2679 ASSERT(!IsActive()); | 2691 ASSERT(!IsActive()); |
| 2680 } | 2692 } |
| 2681 | 2693 |
| 2682 } } // namespace v8::internal | 2694 } } // namespace v8::internal |
| OLD | NEW |