| 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 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 512 // assertions during startup. | 512 // assertions during startup. |
| 513 native_context()->set_initial_array_prototype(*prototype); | 513 native_context()->set_initial_array_prototype(*prototype); |
| 514 Accessors::FunctionSetPrototype(object_fun, prototype); | 514 Accessors::FunctionSetPrototype(object_fun, prototype); |
| 515 } | 515 } |
| 516 | 516 |
| 517 // Allocate the empty function as the prototype for function ECMAScript | 517 // Allocate the empty function as the prototype for function ECMAScript |
| 518 // 262 15.3.4. | 518 // 262 15.3.4. |
| 519 Handle<String> empty_string = | 519 Handle<String> empty_string = |
| 520 factory->InternalizeOneByteString(STATIC_ASCII_VECTOR("Empty")); | 520 factory->InternalizeOneByteString(STATIC_ASCII_VECTOR("Empty")); |
| 521 Handle<JSFunction> empty_function = | 521 Handle<JSFunction> empty_function = |
| 522 factory->NewFunctionWithoutPrototype(empty_string, CLASSIC_MODE); | 522 factory->NewFunctionWithoutPrototype(empty_string, SLOPPY_MODE); |
| 523 | 523 |
| 524 // --- E m p t y --- | 524 // --- E m p t y --- |
| 525 Handle<Code> code = | 525 Handle<Code> code = |
| 526 Handle<Code>(isolate->builtins()->builtin( | 526 Handle<Code>(isolate->builtins()->builtin( |
| 527 Builtins::kEmptyFunction)); | 527 Builtins::kEmptyFunction)); |
| 528 empty_function->set_code(*code); | 528 empty_function->set_code(*code); |
| 529 empty_function->shared()->set_code(*code); | 529 empty_function->shared()->set_code(*code); |
| 530 Handle<String> source = | 530 Handle<String> source = |
| 531 factory->NewStringFromOneByte(STATIC_ASCII_VECTOR("() {}")); | 531 factory->NewStringFromOneByte(STATIC_ASCII_VECTOR("() {}")); |
| 532 Handle<Script> script = factory->NewScript(source); | 532 Handle<Script> script = factory->NewScript(source); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 } | 597 } |
| 598 } | 598 } |
| 599 | 599 |
| 600 | 600 |
| 601 // ECMAScript 5th Edition, 13.2.3 | 601 // ECMAScript 5th Edition, 13.2.3 |
| 602 Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() { | 602 Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() { |
| 603 if (throw_type_error_function.is_null()) { | 603 if (throw_type_error_function.is_null()) { |
| 604 Handle<String> name = factory()->InternalizeOneByteString( | 604 Handle<String> name = factory()->InternalizeOneByteString( |
| 605 STATIC_ASCII_VECTOR("ThrowTypeError")); | 605 STATIC_ASCII_VECTOR("ThrowTypeError")); |
| 606 throw_type_error_function = | 606 throw_type_error_function = |
| 607 factory()->NewFunctionWithoutPrototype(name, CLASSIC_MODE); | 607 factory()->NewFunctionWithoutPrototype(name, SLOPPY_MODE); |
| 608 Handle<Code> code(isolate()->builtins()->builtin( | 608 Handle<Code> code(isolate()->builtins()->builtin( |
| 609 Builtins::kStrictModePoisonPill)); | 609 Builtins::kStrictModePoisonPill)); |
| 610 throw_type_error_function->set_map( | 610 throw_type_error_function->set_map( |
| 611 native_context()->function_map()); | 611 native_context()->function_map()); |
| 612 throw_type_error_function->set_code(*code); | 612 throw_type_error_function->set_code(*code); |
| 613 throw_type_error_function->shared()->set_code(*code); | 613 throw_type_error_function->shared()->set_code(*code); |
| 614 throw_type_error_function->shared()->DontAdaptArguments(); | 614 throw_type_error_function->shared()->DontAdaptArguments(); |
| 615 | 615 |
| 616 JSObject::PreventExtensions(throw_type_error_function); | 616 JSObject::PreventExtensions(throw_type_error_function); |
| 617 } | 617 } |
| (...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1166 | 1166 |
| 1167 // Check the state of the object. | 1167 // Check the state of the object. |
| 1168 ASSERT(result->HasFastProperties()); | 1168 ASSERT(result->HasFastProperties()); |
| 1169 ASSERT(result->HasFastObjectElements()); | 1169 ASSERT(result->HasFastObjectElements()); |
| 1170 #endif | 1170 #endif |
| 1171 } | 1171 } |
| 1172 | 1172 |
| 1173 { // --- aliased_arguments_boilerplate_ | 1173 { // --- aliased_arguments_boilerplate_ |
| 1174 // Set up a well-formed parameter map to make assertions happy. | 1174 // Set up a well-formed parameter map to make assertions happy. |
| 1175 Handle<FixedArray> elements = factory->NewFixedArray(2); | 1175 Handle<FixedArray> elements = factory->NewFixedArray(2); |
| 1176 elements->set_map(heap->non_strict_arguments_elements_map()); | 1176 elements->set_map(heap->sloppy_arguments_elements_map()); |
| 1177 Handle<FixedArray> array; | 1177 Handle<FixedArray> array; |
| 1178 array = factory->NewFixedArray(0); | 1178 array = factory->NewFixedArray(0); |
| 1179 elements->set(0, *array); | 1179 elements->set(0, *array); |
| 1180 array = factory->NewFixedArray(0); | 1180 array = factory->NewFixedArray(0); |
| 1181 elements->set(1, *array); | 1181 elements->set(1, *array); |
| 1182 | 1182 |
| 1183 Handle<Map> old_map(native_context()->arguments_boilerplate()->map()); | 1183 Handle<Map> old_map(native_context()->arguments_boilerplate()->map()); |
| 1184 Handle<Map> new_map = factory->CopyMap(old_map); | 1184 Handle<Map> new_map = factory->CopyMap(old_map); |
| 1185 new_map->set_pre_allocated_property_fields(2); | 1185 new_map->set_pre_allocated_property_fields(2); |
| 1186 Handle<JSObject> result = factory->NewJSObjectFromMap(new_map); | 1186 Handle<JSObject> result = factory->NewJSObjectFromMap(new_map); |
| 1187 // Set elements kind after allocating the object because | 1187 // Set elements kind after allocating the object because |
| 1188 // NewJSObjectFromMap assumes a fast elements map. | 1188 // NewJSObjectFromMap assumes a fast elements map. |
| 1189 new_map->set_elements_kind(NON_STRICT_ARGUMENTS_ELEMENTS); | 1189 new_map->set_elements_kind(SLOPPY_ARGUMENTS_ELEMENTS); |
| 1190 result->set_elements(*elements); | 1190 result->set_elements(*elements); |
| 1191 ASSERT(result->HasNonStrictArgumentsElements()); | 1191 ASSERT(result->HasSloppyArgumentsElements()); |
| 1192 native_context()->set_aliased_arguments_boilerplate(*result); | 1192 native_context()->set_aliased_arguments_boilerplate(*result); |
| 1193 } | 1193 } |
| 1194 | 1194 |
| 1195 { // --- strict mode arguments boilerplate | 1195 { // --- strict mode arguments boilerplate |
| 1196 const PropertyAttributes attributes = | 1196 const PropertyAttributes attributes = |
| 1197 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); | 1197 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 1198 | 1198 |
| 1199 // Create the ThrowTypeError functions. | 1199 // Create the ThrowTypeError functions. |
| 1200 Handle<AccessorPair> callee = factory->NewAccessorPair(); | 1200 Handle<AccessorPair> callee = factory->NewAccessorPair(); |
| 1201 Handle<AccessorPair> caller = factory->NewAccessorPair(); | 1201 Handle<AccessorPair> caller = factory->NewAccessorPair(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1233 *caller, | 1233 *caller, |
| 1234 attributes); | 1234 attributes); |
| 1235 map->AppendDescriptor(&d, witness); | 1235 map->AppendDescriptor(&d, witness); |
| 1236 } | 1236 } |
| 1237 | 1237 |
| 1238 map->set_function_with_prototype(true); | 1238 map->set_function_with_prototype(true); |
| 1239 map->set_prototype(native_context()->object_function()->prototype()); | 1239 map->set_prototype(native_context()->object_function()->prototype()); |
| 1240 map->set_pre_allocated_property_fields(1); | 1240 map->set_pre_allocated_property_fields(1); |
| 1241 map->set_inobject_properties(1); | 1241 map->set_inobject_properties(1); |
| 1242 | 1242 |
| 1243 // Copy constructor from the non-strict arguments boilerplate. | 1243 // Copy constructor from the sloppy arguments boilerplate. |
| 1244 map->set_constructor( | 1244 map->set_constructor( |
| 1245 native_context()->arguments_boilerplate()->map()->constructor()); | 1245 native_context()->arguments_boilerplate()->map()->constructor()); |
| 1246 | 1246 |
| 1247 // Allocate the arguments boilerplate object. | 1247 // Allocate the arguments boilerplate object. |
| 1248 Handle<JSObject> result = factory->NewJSObjectFromMap(map); | 1248 Handle<JSObject> result = factory->NewJSObjectFromMap(map); |
| 1249 native_context()->set_strict_mode_arguments_boilerplate(*result); | 1249 native_context()->set_strict_mode_arguments_boilerplate(*result); |
| 1250 | 1250 |
| 1251 // Add length property only for strict mode boilerplate. | 1251 // Add length property only for strict mode boilerplate. |
| 1252 CHECK_NOT_EMPTY_HANDLE(isolate, | 1252 CHECK_NOT_EMPTY_HANDLE(isolate, |
| 1253 JSObject::SetLocalPropertyIgnoreAttributes( | 1253 JSObject::SetLocalPropertyIgnoreAttributes( |
| (...skipping 1492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2746 return from + sizeof(NestingCounterType); | 2746 return from + sizeof(NestingCounterType); |
| 2747 } | 2747 } |
| 2748 | 2748 |
| 2749 | 2749 |
| 2750 // Called when the top-level V8 mutex is destroyed. | 2750 // Called when the top-level V8 mutex is destroyed. |
| 2751 void Bootstrapper::FreeThreadResources() { | 2751 void Bootstrapper::FreeThreadResources() { |
| 2752 ASSERT(!IsActive()); | 2752 ASSERT(!IsActive()); |
| 2753 } | 2753 } |
| 2754 | 2754 |
| 2755 } } // namespace v8::internal | 2755 } } // namespace v8::internal |
| OLD | NEW |