| 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 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 Handle<Foreign> length(factory()->NewForeign(&Accessors::FunctionLength)); | 390 Handle<Foreign> length(factory()->NewForeign(&Accessors::FunctionLength)); |
| 391 Handle<Foreign> name(factory()->NewForeign(&Accessors::FunctionName)); | 391 Handle<Foreign> name(factory()->NewForeign(&Accessors::FunctionName)); |
| 392 Handle<Foreign> args(factory()->NewForeign(&Accessors::FunctionArguments)); | 392 Handle<Foreign> args(factory()->NewForeign(&Accessors::FunctionArguments)); |
| 393 Handle<Foreign> caller(factory()->NewForeign(&Accessors::FunctionCaller)); | 393 Handle<Foreign> caller(factory()->NewForeign(&Accessors::FunctionCaller)); |
| 394 Handle<Foreign> prototype; | 394 Handle<Foreign> prototype; |
| 395 if (prototypeMode != DONT_ADD_PROTOTYPE) { | 395 if (prototypeMode != DONT_ADD_PROTOTYPE) { |
| 396 prototype = factory()->NewForeign(&Accessors::FunctionPrototype); | 396 prototype = factory()->NewForeign(&Accessors::FunctionPrototype); |
| 397 } | 397 } |
| 398 PropertyAttributes attribs = static_cast<PropertyAttributes>( | 398 PropertyAttributes attribs = static_cast<PropertyAttributes>( |
| 399 DONT_ENUM | DONT_DELETE | READ_ONLY); | 399 DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 400 Map::SetDescriptors(map, descriptors); | 400 map->set_instance_descriptors(*descriptors); |
| 401 | 401 |
| 402 { // Add length. | 402 { // Add length. |
| 403 CallbacksDescriptor d(*factory()->length_symbol(), *length, attribs); | 403 CallbacksDescriptor d(*factory()->length_symbol(), *length, attribs); |
| 404 map->AppendDescriptor(&d, witness); | 404 map->AppendDescriptor(&d, witness); |
| 405 } | 405 } |
| 406 { // Add name. | 406 { // Add name. |
| 407 CallbacksDescriptor d(*factory()->name_symbol(), *name, attribs); | 407 CallbacksDescriptor d(*factory()->name_symbol(), *name, attribs); |
| 408 map->AppendDescriptor(&d, witness); | 408 map->AppendDescriptor(&d, witness); |
| 409 } | 409 } |
| 410 { // Add arguments. | 410 { // Add arguments. |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 531 Handle<Foreign> length(factory()->NewForeign(&Accessors::FunctionLength)); | 531 Handle<Foreign> length(factory()->NewForeign(&Accessors::FunctionLength)); |
| 532 Handle<Foreign> name(factory()->NewForeign(&Accessors::FunctionName)); | 532 Handle<Foreign> name(factory()->NewForeign(&Accessors::FunctionName)); |
| 533 Handle<AccessorPair> arguments(factory()->NewAccessorPair()); | 533 Handle<AccessorPair> arguments(factory()->NewAccessorPair()); |
| 534 Handle<AccessorPair> caller(factory()->NewAccessorPair()); | 534 Handle<AccessorPair> caller(factory()->NewAccessorPair()); |
| 535 Handle<Foreign> prototype; | 535 Handle<Foreign> prototype; |
| 536 if (prototypeMode != DONT_ADD_PROTOTYPE) { | 536 if (prototypeMode != DONT_ADD_PROTOTYPE) { |
| 537 prototype = factory()->NewForeign(&Accessors::FunctionPrototype); | 537 prototype = factory()->NewForeign(&Accessors::FunctionPrototype); |
| 538 } | 538 } |
| 539 PropertyAttributes attribs = static_cast<PropertyAttributes>( | 539 PropertyAttributes attribs = static_cast<PropertyAttributes>( |
| 540 DONT_ENUM | DONT_DELETE); | 540 DONT_ENUM | DONT_DELETE); |
| 541 Map::SetDescriptors(map, descriptors); | 541 map->set_instance_descriptors(*descriptors); |
| 542 | 542 |
| 543 { // Add length. | 543 { // Add length. |
| 544 CallbacksDescriptor d(*factory()->length_symbol(), *length, attribs); | 544 CallbacksDescriptor d(*factory()->length_symbol(), *length, attribs); |
| 545 map->AppendDescriptor(&d, witness); | 545 map->AppendDescriptor(&d, witness); |
| 546 } | 546 } |
| 547 { // Add name. | 547 { // Add name. |
| 548 CallbacksDescriptor d(*factory()->name_symbol(), *name, attribs); | 548 CallbacksDescriptor d(*factory()->name_symbol(), *name, attribs); |
| 549 map->AppendDescriptor(&d, witness); | 549 map->AppendDescriptor(&d, witness); |
| 550 } | 550 } |
| 551 { // Add arguments. | 551 { // Add arguments. |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 868 array_function->shared()->set_length(1); | 868 array_function->shared()->set_length(1); |
| 869 | 869 |
| 870 Handle<Map> initial_map(array_function->initial_map()); | 870 Handle<Map> initial_map(array_function->initial_map()); |
| 871 Handle<DescriptorArray> array_descriptors( | 871 Handle<DescriptorArray> array_descriptors( |
| 872 factory->NewDescriptorArray(0, 1)); | 872 factory->NewDescriptorArray(0, 1)); |
| 873 DescriptorArray::WhitenessWitness witness(*array_descriptors); | 873 DescriptorArray::WhitenessWitness witness(*array_descriptors); |
| 874 | 874 |
| 875 Handle<Foreign> array_length(factory->NewForeign(&Accessors::ArrayLength)); | 875 Handle<Foreign> array_length(factory->NewForeign(&Accessors::ArrayLength)); |
| 876 PropertyAttributes attribs = static_cast<PropertyAttributes>( | 876 PropertyAttributes attribs = static_cast<PropertyAttributes>( |
| 877 DONT_ENUM | DONT_DELETE); | 877 DONT_ENUM | DONT_DELETE); |
| 878 Map::SetDescriptors(initial_map, array_descriptors); | 878 initial_map->set_instance_descriptors(*array_descriptors); |
| 879 | 879 |
| 880 { // Add length. | 880 { // Add length. |
| 881 CallbacksDescriptor d(*factory->length_symbol(), *array_length, attribs); | 881 CallbacksDescriptor d(*factory->length_symbol(), *array_length, attribs); |
| 882 array_function->initial_map()->AppendDescriptor(&d, witness); | 882 array_function->initial_map()->AppendDescriptor(&d, witness); |
| 883 } | 883 } |
| 884 | 884 |
| 885 // array_function is used internally. JS code creating array object should | 885 // array_function is used internally. JS code creating array object should |
| 886 // search for the 'Array' property on the global object and use that one | 886 // search for the 'Array' property on the global object and use that one |
| 887 // as the constructor. 'Array' property on a global object can be | 887 // as the constructor. 'Array' property on a global object can be |
| 888 // overwritten by JS code. | 888 // overwritten by JS code. |
| (...skipping 28 matching lines...) Expand all Loading... |
| 917 Handle<Map> string_map = | 917 Handle<Map> string_map = |
| 918 Handle<Map>(native_context()->string_function()->initial_map()); | 918 Handle<Map>(native_context()->string_function()->initial_map()); |
| 919 Handle<DescriptorArray> string_descriptors( | 919 Handle<DescriptorArray> string_descriptors( |
| 920 factory->NewDescriptorArray(0, 1)); | 920 factory->NewDescriptorArray(0, 1)); |
| 921 DescriptorArray::WhitenessWitness witness(*string_descriptors); | 921 DescriptorArray::WhitenessWitness witness(*string_descriptors); |
| 922 | 922 |
| 923 Handle<Foreign> string_length( | 923 Handle<Foreign> string_length( |
| 924 factory->NewForeign(&Accessors::StringLength)); | 924 factory->NewForeign(&Accessors::StringLength)); |
| 925 PropertyAttributes attribs = static_cast<PropertyAttributes>( | 925 PropertyAttributes attribs = static_cast<PropertyAttributes>( |
| 926 DONT_ENUM | DONT_DELETE | READ_ONLY); | 926 DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 927 Map::SetDescriptors(string_map, string_descriptors); | 927 string_map->set_instance_descriptors(*string_descriptors); |
| 928 | 928 |
| 929 { // Add length. | 929 { // Add length. |
| 930 CallbacksDescriptor d(*factory->length_symbol(), *string_length, attribs); | 930 CallbacksDescriptor d(*factory->length_symbol(), *string_length, attribs); |
| 931 string_map->AppendDescriptor(&d, witness); | 931 string_map->AppendDescriptor(&d, witness); |
| 932 } | 932 } |
| 933 } | 933 } |
| 934 | 934 |
| 935 { // --- D a t e --- | 935 { // --- D a t e --- |
| 936 // Builtin functions for Date.prototype. | 936 // Builtin functions for Date.prototype. |
| 937 Handle<JSFunction> date_fun = | 937 Handle<JSFunction> date_fun = |
| (...skipping 15 matching lines...) Expand all Loading... |
| 953 | 953 |
| 954 ASSERT(regexp_fun->has_initial_map()); | 954 ASSERT(regexp_fun->has_initial_map()); |
| 955 Handle<Map> initial_map(regexp_fun->initial_map()); | 955 Handle<Map> initial_map(regexp_fun->initial_map()); |
| 956 | 956 |
| 957 ASSERT_EQ(0, initial_map->inobject_properties()); | 957 ASSERT_EQ(0, initial_map->inobject_properties()); |
| 958 | 958 |
| 959 PropertyAttributes final = | 959 PropertyAttributes final = |
| 960 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); | 960 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 961 Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(0, 5); | 961 Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(0, 5); |
| 962 DescriptorArray::WhitenessWitness witness(*descriptors); | 962 DescriptorArray::WhitenessWitness witness(*descriptors); |
| 963 Map::SetDescriptors(initial_map, descriptors); | 963 initial_map->set_instance_descriptors(*descriptors); |
| 964 | 964 |
| 965 { | 965 { |
| 966 // ECMA-262, section 15.10.7.1. | 966 // ECMA-262, section 15.10.7.1. |
| 967 FieldDescriptor field(heap->source_symbol(), | 967 FieldDescriptor field(heap->source_symbol(), |
| 968 JSRegExp::kSourceFieldIndex, | 968 JSRegExp::kSourceFieldIndex, |
| 969 final); | 969 final); |
| 970 initial_map->AppendDescriptor(&field, witness); | 970 initial_map->AppendDescriptor(&field, witness); |
| 971 } | 971 } |
| 972 { | 972 { |
| 973 // ECMA-262, section 15.10.7.2. | 973 // ECMA-262, section 15.10.7.2. |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1137 callee->set_setter(*throw_function); | 1137 callee->set_setter(*throw_function); |
| 1138 caller->set_getter(*throw_function); | 1138 caller->set_getter(*throw_function); |
| 1139 caller->set_setter(*throw_function); | 1139 caller->set_setter(*throw_function); |
| 1140 | 1140 |
| 1141 // Create the map. Allocate one in-object field for length. | 1141 // Create the map. Allocate one in-object field for length. |
| 1142 Handle<Map> map = factory->NewMap(JS_OBJECT_TYPE, | 1142 Handle<Map> map = factory->NewMap(JS_OBJECT_TYPE, |
| 1143 Heap::kArgumentsObjectSizeStrict); | 1143 Heap::kArgumentsObjectSizeStrict); |
| 1144 // Create the descriptor array for the arguments object. | 1144 // Create the descriptor array for the arguments object. |
| 1145 Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(0, 3); | 1145 Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(0, 3); |
| 1146 DescriptorArray::WhitenessWitness witness(*descriptors); | 1146 DescriptorArray::WhitenessWitness witness(*descriptors); |
| 1147 Map::SetDescriptors(map, descriptors); | 1147 map->set_instance_descriptors(*descriptors); |
| 1148 | 1148 |
| 1149 { // length | 1149 { // length |
| 1150 FieldDescriptor d(*factory->length_symbol(), 0, DONT_ENUM); | 1150 FieldDescriptor d(*factory->length_symbol(), 0, DONT_ENUM); |
| 1151 map->AppendDescriptor(&d, witness); | 1151 map->AppendDescriptor(&d, witness); |
| 1152 } | 1152 } |
| 1153 { // callee | 1153 { // callee |
| 1154 CallbacksDescriptor d(*factory->callee_symbol(), | 1154 CallbacksDescriptor d(*factory->callee_symbol(), |
| 1155 *callee, | 1155 *callee, |
| 1156 attributes); | 1156 attributes); |
| 1157 map->AppendDescriptor(&d, witness); | 1157 map->AppendDescriptor(&d, witness); |
| (...skipping 369 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1527 Handle<String> eval_from_script_position_symbol( | 1527 Handle<String> eval_from_script_position_symbol( |
| 1528 factory()->LookupAsciiSymbol("eval_from_script_position")); | 1528 factory()->LookupAsciiSymbol("eval_from_script_position")); |
| 1529 Handle<Foreign> script_eval_from_script_position( | 1529 Handle<Foreign> script_eval_from_script_position( |
| 1530 factory()->NewForeign(&Accessors::ScriptEvalFromScriptPosition)); | 1530 factory()->NewForeign(&Accessors::ScriptEvalFromScriptPosition)); |
| 1531 Handle<String> eval_from_function_name_symbol( | 1531 Handle<String> eval_from_function_name_symbol( |
| 1532 factory()->LookupAsciiSymbol("eval_from_function_name")); | 1532 factory()->LookupAsciiSymbol("eval_from_function_name")); |
| 1533 Handle<Foreign> script_eval_from_function_name( | 1533 Handle<Foreign> script_eval_from_function_name( |
| 1534 factory()->NewForeign(&Accessors::ScriptEvalFromFunctionName)); | 1534 factory()->NewForeign(&Accessors::ScriptEvalFromFunctionName)); |
| 1535 PropertyAttributes attribs = | 1535 PropertyAttributes attribs = |
| 1536 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); | 1536 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 1537 Map::SetDescriptors(script_map, script_descriptors); | 1537 script_map->set_instance_descriptors(*script_descriptors); |
| 1538 | 1538 |
| 1539 { | 1539 { |
| 1540 CallbacksDescriptor d( | 1540 CallbacksDescriptor d( |
| 1541 *factory()->source_symbol(), *script_source, attribs); | 1541 *factory()->source_symbol(), *script_source, attribs); |
| 1542 script_map->AppendDescriptor(&d, witness); | 1542 script_map->AppendDescriptor(&d, witness); |
| 1543 } | 1543 } |
| 1544 | 1544 |
| 1545 { | 1545 { |
| 1546 CallbacksDescriptor d(*factory()->name_symbol(), *script_name, attribs); | 1546 CallbacksDescriptor d(*factory()->name_symbol(), *script_name, attribs); |
| 1547 script_map->AppendDescriptor(&d, witness); | 1547 script_map->AppendDescriptor(&d, witness); |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1668 // Make "length" magic on instances. | 1668 // Make "length" magic on instances. |
| 1669 Handle<Map> initial_map(array_function->initial_map()); | 1669 Handle<Map> initial_map(array_function->initial_map()); |
| 1670 Handle<DescriptorArray> array_descriptors( | 1670 Handle<DescriptorArray> array_descriptors( |
| 1671 factory()->NewDescriptorArray(0, 1)); | 1671 factory()->NewDescriptorArray(0, 1)); |
| 1672 DescriptorArray::WhitenessWitness witness(*array_descriptors); | 1672 DescriptorArray::WhitenessWitness witness(*array_descriptors); |
| 1673 | 1673 |
| 1674 Handle<Foreign> array_length(factory()->NewForeign( | 1674 Handle<Foreign> array_length(factory()->NewForeign( |
| 1675 &Accessors::ArrayLength)); | 1675 &Accessors::ArrayLength)); |
| 1676 PropertyAttributes attribs = static_cast<PropertyAttributes>( | 1676 PropertyAttributes attribs = static_cast<PropertyAttributes>( |
| 1677 DONT_ENUM | DONT_DELETE); | 1677 DONT_ENUM | DONT_DELETE); |
| 1678 Map::SetDescriptors(initial_map, array_descriptors); | 1678 initial_map->set_instance_descriptors(*array_descriptors); |
| 1679 | 1679 |
| 1680 { // Add length. | 1680 { // Add length. |
| 1681 CallbacksDescriptor d( | 1681 CallbacksDescriptor d( |
| 1682 *factory()->length_symbol(), *array_length, attribs); | 1682 *factory()->length_symbol(), *array_length, attribs); |
| 1683 array_function->initial_map()->AppendDescriptor(&d, witness); | 1683 array_function->initial_map()->AppendDescriptor(&d, witness); |
| 1684 } | 1684 } |
| 1685 | 1685 |
| 1686 native_context()->set_internal_array_function(*array_function); | 1686 native_context()->set_internal_array_function(*array_function); |
| 1687 } | 1687 } |
| 1688 | 1688 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1763 initial_map->set_constructor(*array_constructor); | 1763 initial_map->set_constructor(*array_constructor); |
| 1764 | 1764 |
| 1765 // Set prototype on map. | 1765 // Set prototype on map. |
| 1766 initial_map->set_non_instance_prototype(false); | 1766 initial_map->set_non_instance_prototype(false); |
| 1767 initial_map->set_prototype(*array_prototype); | 1767 initial_map->set_prototype(*array_prototype); |
| 1768 | 1768 |
| 1769 // Update map with length accessor from Array and add "index" and "input". | 1769 // Update map with length accessor from Array and add "index" and "input". |
| 1770 Handle<DescriptorArray> reresult_descriptors = | 1770 Handle<DescriptorArray> reresult_descriptors = |
| 1771 factory()->NewDescriptorArray(0, 3); | 1771 factory()->NewDescriptorArray(0, 3); |
| 1772 DescriptorArray::WhitenessWitness witness(*reresult_descriptors); | 1772 DescriptorArray::WhitenessWitness witness(*reresult_descriptors); |
| 1773 Map::SetDescriptors(initial_map, reresult_descriptors); | 1773 initial_map->set_instance_descriptors(*reresult_descriptors); |
| 1774 | 1774 |
| 1775 { | 1775 { |
| 1776 JSFunction* array_function = native_context()->array_function(); | 1776 JSFunction* array_function = native_context()->array_function(); |
| 1777 Handle<DescriptorArray> array_descriptors( | 1777 Handle<DescriptorArray> array_descriptors( |
| 1778 array_function->initial_map()->instance_descriptors()); | 1778 array_function->initial_map()->instance_descriptors()); |
| 1779 String* length = heap()->length_symbol(); | 1779 String* length = heap()->length_symbol(); |
| 1780 int old = array_descriptors->SearchWithCache( | 1780 int old = array_descriptors->SearchWithCache( |
| 1781 length, array_function->initial_map()); | 1781 length, array_function->initial_map()); |
| 1782 ASSERT(old != DescriptorArray::kNotFound); | 1782 ASSERT(old != DescriptorArray::kNotFound); |
| 1783 CallbacksDescriptor desc(length, | 1783 CallbacksDescriptor desc(length, |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2399 return from + sizeof(NestingCounterType); | 2399 return from + sizeof(NestingCounterType); |
| 2400 } | 2400 } |
| 2401 | 2401 |
| 2402 | 2402 |
| 2403 // Called when the top-level V8 mutex is destroyed. | 2403 // Called when the top-level V8 mutex is destroyed. |
| 2404 void Bootstrapper::FreeThreadResources() { | 2404 void Bootstrapper::FreeThreadResources() { |
| 2405 ASSERT(!IsActive()); | 2405 ASSERT(!IsActive()); |
| 2406 } | 2406 } |
| 2407 | 2407 |
| 2408 } } // namespace v8::internal | 2408 } } // namespace v8::internal |
| OLD | NEW |