| 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 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 383 | 383 |
| 384 Handle<DescriptorArray> Genesis::ComputeFunctionInstanceDescriptor( | 384 Handle<DescriptorArray> Genesis::ComputeFunctionInstanceDescriptor( |
| 385 PrototypePropertyMode prototypeMode) { | 385 PrototypePropertyMode prototypeMode) { |
| 386 int size = (prototypeMode == DONT_ADD_PROTOTYPE) ? 4 : 5; | 386 int size = (prototypeMode == DONT_ADD_PROTOTYPE) ? 4 : 5; |
| 387 Handle<DescriptorArray> descriptors(factory()->NewDescriptorArray(size)); | 387 Handle<DescriptorArray> descriptors(factory()->NewDescriptorArray(size)); |
| 388 PropertyAttributes attribs = static_cast<PropertyAttributes>( | 388 PropertyAttributes attribs = static_cast<PropertyAttributes>( |
| 389 DONT_ENUM | DONT_DELETE | READ_ONLY); | 389 DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 390 | 390 |
| 391 DescriptorArray::WhitenessWitness witness(*descriptors); | 391 DescriptorArray::WhitenessWitness witness(*descriptors); |
| 392 | 392 |
| 393 int index = 0; | |
| 394 | |
| 395 { // Add length. | 393 { // Add length. |
| 396 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionLength)); | 394 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionLength)); |
| 397 CallbacksDescriptor d(*factory()->length_symbol(), *f, attribs, index + 1); | 395 CallbacksDescriptor d(*factory()->length_symbol(), *f, attribs); |
| 398 descriptors->Set(index, &d, witness); | 396 descriptors->Append(&d, witness); |
| 399 ++index; | |
| 400 } | 397 } |
| 401 { // Add name. | 398 { // Add name. |
| 402 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionName)); | 399 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionName)); |
| 403 CallbacksDescriptor d(*factory()->name_symbol(), *f, attribs, index + 1); | 400 CallbacksDescriptor d(*factory()->name_symbol(), *f, attribs); |
| 404 descriptors->Set(index, &d, witness); | 401 descriptors->Append(&d, witness); |
| 405 ++index; | |
| 406 } | 402 } |
| 407 { // Add arguments. | 403 { // Add arguments. |
| 408 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionArguments)); | 404 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionArguments)); |
| 409 CallbacksDescriptor d( | 405 CallbacksDescriptor d(*factory()->arguments_symbol(), *f, attribs); |
| 410 *factory()->arguments_symbol(), *f, attribs, index + 1); | 406 descriptors->Append(&d, witness); |
| 411 descriptors->Set(index, &d, witness); | |
| 412 ++index; | |
| 413 } | 407 } |
| 414 { // Add caller. | 408 { // Add caller. |
| 415 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionCaller)); | 409 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionCaller)); |
| 416 CallbacksDescriptor d(*factory()->caller_symbol(), *f, attribs, index + 1); | 410 CallbacksDescriptor d(*factory()->caller_symbol(), *f, attribs); |
| 417 descriptors->Set(index, &d, witness); | 411 descriptors->Append(&d, witness); |
| 418 ++index; | |
| 419 } | 412 } |
| 420 if (prototypeMode != DONT_ADD_PROTOTYPE) { | 413 if (prototypeMode != DONT_ADD_PROTOTYPE) { |
| 421 // Add prototype. | 414 // Add prototype. |
| 422 if (prototypeMode == ADD_WRITEABLE_PROTOTYPE) { | 415 if (prototypeMode == ADD_WRITEABLE_PROTOTYPE) { |
| 423 attribs = static_cast<PropertyAttributes>(attribs & ~READ_ONLY); | 416 attribs = static_cast<PropertyAttributes>(attribs & ~READ_ONLY); |
| 424 } | 417 } |
| 425 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionPrototype)); | 418 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionPrototype)); |
| 426 CallbacksDescriptor d( | 419 CallbacksDescriptor d(*factory()->prototype_symbol(), *f, attribs); |
| 427 *factory()->prototype_symbol(), *f, attribs, index + 1); | 420 descriptors->Append(&d, witness); |
| 428 descriptors->Set(index, &d, witness); | |
| 429 } | 421 } |
| 430 | 422 |
| 431 descriptors->Sort(witness); | 423 descriptors->Sort(witness); |
| 432 return descriptors; | 424 return descriptors; |
| 433 } | 425 } |
| 434 | 426 |
| 435 | 427 |
| 436 Handle<Map> Genesis::CreateFunctionMap(PrototypePropertyMode prototype_mode) { | 428 Handle<Map> Genesis::CreateFunctionMap(PrototypePropertyMode prototype_mode) { |
| 437 Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize); | 429 Handle<Map> map = factory()->NewMap(JS_FUNCTION_TYPE, JSFunction::kSize); |
| 438 Handle<DescriptorArray> descriptors = | 430 Handle<DescriptorArray> descriptors = |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 535 | 527 |
| 536 Handle<DescriptorArray> Genesis::ComputeStrictFunctionInstanceDescriptor( | 528 Handle<DescriptorArray> Genesis::ComputeStrictFunctionInstanceDescriptor( |
| 537 PrototypePropertyMode prototypeMode) { | 529 PrototypePropertyMode prototypeMode) { |
| 538 int size = (prototypeMode == DONT_ADD_PROTOTYPE) ? 4 : 5; | 530 int size = (prototypeMode == DONT_ADD_PROTOTYPE) ? 4 : 5; |
| 539 Handle<DescriptorArray> descriptors(factory()->NewDescriptorArray(size)); | 531 Handle<DescriptorArray> descriptors(factory()->NewDescriptorArray(size)); |
| 540 PropertyAttributes attribs = static_cast<PropertyAttributes>( | 532 PropertyAttributes attribs = static_cast<PropertyAttributes>( |
| 541 DONT_ENUM | DONT_DELETE); | 533 DONT_ENUM | DONT_DELETE); |
| 542 | 534 |
| 543 DescriptorArray::WhitenessWitness witness(*descriptors); | 535 DescriptorArray::WhitenessWitness witness(*descriptors); |
| 544 | 536 |
| 545 int index = 0; | |
| 546 { // Add length. | 537 { // Add length. |
| 547 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionLength)); | 538 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionLength)); |
| 548 CallbacksDescriptor d(*factory()->length_symbol(), *f, attribs, index + 1); | 539 CallbacksDescriptor d(*factory()->length_symbol(), *f, attribs); |
| 549 descriptors->Set(index, &d, witness); | 540 descriptors->Append(&d, witness); |
| 550 ++index; | |
| 551 } | 541 } |
| 552 { // Add name. | 542 { // Add name. |
| 553 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionName)); | 543 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionName)); |
| 554 CallbacksDescriptor d(*factory()->name_symbol(), *f, attribs, index + 1); | 544 CallbacksDescriptor d(*factory()->name_symbol(), *f, attribs); |
| 555 descriptors->Set(index, &d, witness); | 545 descriptors->Append(&d, witness); |
| 556 ++index; | |
| 557 } | 546 } |
| 558 { // Add arguments. | 547 { // Add arguments. |
| 559 Handle<AccessorPair> arguments(factory()->NewAccessorPair()); | 548 Handle<AccessorPair> arguments(factory()->NewAccessorPair()); |
| 560 CallbacksDescriptor d( | 549 CallbacksDescriptor d(*factory()->arguments_symbol(), *arguments, attribs); |
| 561 *factory()->arguments_symbol(), *arguments, attribs, index + 1); | 550 descriptors->Append(&d, witness); |
| 562 descriptors->Set(index, &d, witness); | |
| 563 ++index; | |
| 564 } | 551 } |
| 565 { // Add caller. | 552 { // Add caller. |
| 566 Handle<AccessorPair> caller(factory()->NewAccessorPair()); | 553 Handle<AccessorPair> caller(factory()->NewAccessorPair()); |
| 567 CallbacksDescriptor d( | 554 CallbacksDescriptor d(*factory()->caller_symbol(), *caller, attribs); |
| 568 *factory()->caller_symbol(), *caller, attribs, index + 1); | 555 descriptors->Append(&d, witness); |
| 569 descriptors->Set(index, &d, witness); | |
| 570 ++index; | |
| 571 } | 556 } |
| 572 | 557 |
| 573 if (prototypeMode != DONT_ADD_PROTOTYPE) { | 558 if (prototypeMode != DONT_ADD_PROTOTYPE) { |
| 574 // Add prototype. | 559 // Add prototype. |
| 575 if (prototypeMode != ADD_WRITEABLE_PROTOTYPE) { | 560 if (prototypeMode != ADD_WRITEABLE_PROTOTYPE) { |
| 576 attribs = static_cast<PropertyAttributes>(attribs | READ_ONLY); | 561 attribs = static_cast<PropertyAttributes>(attribs | READ_ONLY); |
| 577 } | 562 } |
| 578 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionPrototype)); | 563 Handle<Foreign> f(factory()->NewForeign(&Accessors::FunctionPrototype)); |
| 579 CallbacksDescriptor d( | 564 CallbacksDescriptor d(*factory()->prototype_symbol(), *f, attribs); |
| 580 *factory()->prototype_symbol(), *f, attribs, index + 1); | 565 descriptors->Append(&d, witness); |
| 581 descriptors->Set(index, &d, witness); | |
| 582 } | 566 } |
| 583 | 567 |
| 584 descriptors->Sort(witness); | 568 descriptors->Sort(witness); |
| 585 return descriptors; | 569 return descriptors; |
| 586 } | 570 } |
| 587 | 571 |
| 588 | 572 |
| 589 // ECMAScript 5th Edition, 13.2.3 | 573 // ECMAScript 5th Edition, 13.2.3 |
| 590 Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() { | 574 Handle<JSFunction> Genesis::GetThrowTypeErrorFunction() { |
| 591 if (throw_type_error_function.is_null()) { | 575 if (throw_type_error_function.is_null()) { |
| (...skipping 368 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 960 | 944 |
| 961 ASSERT(regexp_fun->has_initial_map()); | 945 ASSERT(regexp_fun->has_initial_map()); |
| 962 Handle<Map> initial_map(regexp_fun->initial_map()); | 946 Handle<Map> initial_map(regexp_fun->initial_map()); |
| 963 | 947 |
| 964 ASSERT_EQ(0, initial_map->inobject_properties()); | 948 ASSERT_EQ(0, initial_map->inobject_properties()); |
| 965 | 949 |
| 966 Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(5); | 950 Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(5); |
| 967 DescriptorArray::WhitenessWitness witness(*descriptors); | 951 DescriptorArray::WhitenessWitness witness(*descriptors); |
| 968 PropertyAttributes final = | 952 PropertyAttributes final = |
| 969 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); | 953 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE | READ_ONLY); |
| 970 int index = 0; | |
| 971 { | 954 { |
| 972 // ECMA-262, section 15.10.7.1. | 955 // ECMA-262, section 15.10.7.1. |
| 973 FieldDescriptor field(heap->source_symbol(), | 956 FieldDescriptor field(heap->source_symbol(), |
| 974 JSRegExp::kSourceFieldIndex, | 957 JSRegExp::kSourceFieldIndex, |
| 975 final, | 958 final); |
| 976 index + 1); | 959 descriptors->Append(&field, witness); |
| 977 descriptors->Set(index, &field, witness); | |
| 978 ++index; | |
| 979 } | 960 } |
| 980 { | 961 { |
| 981 // ECMA-262, section 15.10.7.2. | 962 // ECMA-262, section 15.10.7.2. |
| 982 FieldDescriptor field(heap->global_symbol(), | 963 FieldDescriptor field(heap->global_symbol(), |
| 983 JSRegExp::kGlobalFieldIndex, | 964 JSRegExp::kGlobalFieldIndex, |
| 984 final, | 965 final); |
| 985 index + 1); | 966 descriptors->Append(&field, witness); |
| 986 descriptors->Set(index, &field, witness); | |
| 987 ++index; | |
| 988 } | 967 } |
| 989 { | 968 { |
| 990 // ECMA-262, section 15.10.7.3. | 969 // ECMA-262, section 15.10.7.3. |
| 991 FieldDescriptor field(heap->ignore_case_symbol(), | 970 FieldDescriptor field(heap->ignore_case_symbol(), |
| 992 JSRegExp::kIgnoreCaseFieldIndex, | 971 JSRegExp::kIgnoreCaseFieldIndex, |
| 993 final, | 972 final); |
| 994 index + 1); | 973 descriptors->Append(&field, witness); |
| 995 descriptors->Set(index, &field, witness); | |
| 996 ++index; | |
| 997 } | 974 } |
| 998 { | 975 { |
| 999 // ECMA-262, section 15.10.7.4. | 976 // ECMA-262, section 15.10.7.4. |
| 1000 FieldDescriptor field(heap->multiline_symbol(), | 977 FieldDescriptor field(heap->multiline_symbol(), |
| 1001 JSRegExp::kMultilineFieldIndex, | 978 JSRegExp::kMultilineFieldIndex, |
| 1002 final, | 979 final); |
| 1003 index + 1); | 980 descriptors->Append(&field, witness); |
| 1004 descriptors->Set(index, &field, witness); | |
| 1005 ++index; | |
| 1006 } | 981 } |
| 1007 { | 982 { |
| 1008 // ECMA-262, section 15.10.7.5. | 983 // ECMA-262, section 15.10.7.5. |
| 1009 PropertyAttributes writable = | 984 PropertyAttributes writable = |
| 1010 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE); | 985 static_cast<PropertyAttributes>(DONT_ENUM | DONT_DELETE); |
| 1011 FieldDescriptor field(heap->last_index_symbol(), | 986 FieldDescriptor field(heap->last_index_symbol(), |
| 1012 JSRegExp::kLastIndexFieldIndex, | 987 JSRegExp::kLastIndexFieldIndex, |
| 1013 writable, | 988 writable); |
| 1014 index + 1); | 989 descriptors->Append(&field, witness); |
| 1015 descriptors->Set(index, &field, witness); | |
| 1016 } | 990 } |
| 1017 descriptors->Sort(witness); | 991 descriptors->Sort(witness); |
| 1018 | 992 |
| 1019 initial_map->set_inobject_properties(5); | 993 initial_map->set_inobject_properties(5); |
| 1020 initial_map->set_pre_allocated_property_fields(5); | 994 initial_map->set_pre_allocated_property_fields(5); |
| 1021 initial_map->set_unused_property_fields(0); | 995 initial_map->set_unused_property_fields(0); |
| 1022 initial_map->set_instance_size( | 996 initial_map->set_instance_size( |
| 1023 initial_map->instance_size() + 5 * kPointerSize); | 997 initial_map->instance_size() + 5 * kPointerSize); |
| 1024 initial_map->set_instance_descriptors(*descriptors); | 998 initial_map->set_instance_descriptors(*descriptors); |
| 1025 initial_map->set_visitor_id(StaticVisitorBase::GetVisitorId(*initial_map)); | 999 initial_map->set_visitor_id(StaticVisitorBase::GetVisitorId(*initial_map)); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1151 | 1125 |
| 1152 // Install the ThrowTypeError functions. | 1126 // Install the ThrowTypeError functions. |
| 1153 callee->set_getter(*throw_function); | 1127 callee->set_getter(*throw_function); |
| 1154 callee->set_setter(*throw_function); | 1128 callee->set_setter(*throw_function); |
| 1155 caller->set_getter(*throw_function); | 1129 caller->set_getter(*throw_function); |
| 1156 caller->set_setter(*throw_function); | 1130 caller->set_setter(*throw_function); |
| 1157 | 1131 |
| 1158 // Create the descriptor array for the arguments object. | 1132 // Create the descriptor array for the arguments object. |
| 1159 Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(3); | 1133 Handle<DescriptorArray> descriptors = factory->NewDescriptorArray(3); |
| 1160 DescriptorArray::WhitenessWitness witness(*descriptors); | 1134 DescriptorArray::WhitenessWitness witness(*descriptors); |
| 1161 int index = 0; | |
| 1162 { // length | 1135 { // length |
| 1163 FieldDescriptor d(*factory->length_symbol(), 0, DONT_ENUM, index + 1); | 1136 FieldDescriptor d(*factory->length_symbol(), 0, DONT_ENUM); |
| 1164 descriptors->Set(index, &d, witness); | 1137 descriptors->Append(&d, witness); |
| 1165 ++index; | |
| 1166 } | 1138 } |
| 1167 { // callee | 1139 { // callee |
| 1168 CallbacksDescriptor d(*factory->callee_symbol(), | 1140 CallbacksDescriptor d(*factory->callee_symbol(), |
| 1169 *callee, | 1141 *callee, |
| 1170 attributes, | 1142 attributes); |
| 1171 index + 1); | 1143 descriptors->Append(&d, witness); |
| 1172 descriptors->Set(index, &d, witness); | |
| 1173 ++index; | |
| 1174 } | 1144 } |
| 1175 { // caller | 1145 { // caller |
| 1176 CallbacksDescriptor d(*factory->caller_symbol(), | 1146 CallbacksDescriptor d(*factory->caller_symbol(), |
| 1177 *caller, | 1147 *caller, |
| 1178 attributes, | 1148 attributes); |
| 1179 index + 1); | 1149 descriptors->Append(&d, witness); |
| 1180 descriptors->Set(index, &d, witness); | |
| 1181 } | 1150 } |
| 1182 descriptors->Sort(witness); | 1151 descriptors->Sort(witness); |
| 1183 | 1152 |
| 1184 // Create the map. Allocate one in-object field for length. | 1153 // Create the map. Allocate one in-object field for length. |
| 1185 Handle<Map> map = factory->NewMap(JS_OBJECT_TYPE, | 1154 Handle<Map> map = factory->NewMap(JS_OBJECT_TYPE, |
| 1186 Heap::kArgumentsObjectSizeStrict); | 1155 Heap::kArgumentsObjectSizeStrict); |
| 1187 map->set_instance_descriptors(*descriptors); | 1156 map->set_instance_descriptors(*descriptors); |
| 1188 map->set_function_with_prototype(true); | 1157 map->set_function_with_prototype(true); |
| 1189 map->set_prototype(global_context()->object_function()->prototype()); | 1158 map->set_prototype(global_context()->object_function()->prototype()); |
| 1190 map->set_pre_allocated_property_fields(1); | 1159 map->set_pre_allocated_property_fields(1); |
| (...skipping 577 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1768 DescriptorArray::WhitenessWitness witness(*reresult_descriptors); | 1737 DescriptorArray::WhitenessWitness witness(*reresult_descriptors); |
| 1769 | 1738 |
| 1770 JSFunction* array_function = global_context()->array_function(); | 1739 JSFunction* array_function = global_context()->array_function(); |
| 1771 Handle<DescriptorArray> array_descriptors( | 1740 Handle<DescriptorArray> array_descriptors( |
| 1772 array_function->initial_map()->instance_descriptors()); | 1741 array_function->initial_map()->instance_descriptors()); |
| 1773 int old = array_descriptors->SearchWithCache(heap()->length_symbol()); | 1742 int old = array_descriptors->SearchWithCache(heap()->length_symbol()); |
| 1774 MaybeObject* copy_result = | 1743 MaybeObject* copy_result = |
| 1775 reresult_descriptors->CopyFrom(0, *array_descriptors, old, witness); | 1744 reresult_descriptors->CopyFrom(0, *array_descriptors, old, witness); |
| 1776 if (copy_result->IsFailure()) return false; | 1745 if (copy_result->IsFailure()) return false; |
| 1777 | 1746 |
| 1778 int index = 1; | 1747 reresult_descriptors->SetLastAdded(0); |
| 1748 |
| 1779 { | 1749 { |
| 1780 FieldDescriptor index_field(heap()->index_symbol(), | 1750 FieldDescriptor index_field(heap()->index_symbol(), |
| 1781 JSRegExpResult::kIndexIndex, | 1751 JSRegExpResult::kIndexIndex, |
| 1782 NONE, | 1752 NONE); |
| 1783 index + 1); | 1753 reresult_descriptors->Append(&index_field, witness); |
| 1784 reresult_descriptors->Set(index, &index_field, witness); | |
| 1785 ++index; | |
| 1786 } | 1754 } |
| 1787 | 1755 |
| 1788 { | 1756 { |
| 1789 FieldDescriptor input_field(heap()->input_symbol(), | 1757 FieldDescriptor input_field(heap()->input_symbol(), |
| 1790 JSRegExpResult::kInputIndex, | 1758 JSRegExpResult::kInputIndex, |
| 1791 NONE, | 1759 NONE); |
| 1792 index + 1); | 1760 reresult_descriptors->Append(&input_field, witness); |
| 1793 reresult_descriptors->Set(index, &input_field, witness); | |
| 1794 } | 1761 } |
| 1795 reresult_descriptors->Sort(witness); | 1762 reresult_descriptors->Sort(witness); |
| 1796 | 1763 |
| 1797 initial_map->set_inobject_properties(2); | 1764 initial_map->set_inobject_properties(2); |
| 1798 initial_map->set_pre_allocated_property_fields(2); | 1765 initial_map->set_pre_allocated_property_fields(2); |
| 1799 initial_map->set_unused_property_fields(0); | 1766 initial_map->set_unused_property_fields(0); |
| 1800 initial_map->set_instance_descriptors(*reresult_descriptors); | 1767 initial_map->set_instance_descriptors(*reresult_descriptors); |
| 1801 | 1768 |
| 1802 global_context()->set_regexp_result_map(*initial_map); | 1769 global_context()->set_regexp_result_map(*initial_map); |
| 1803 } | 1770 } |
| (...skipping 585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2389 return from + sizeof(NestingCounterType); | 2356 return from + sizeof(NestingCounterType); |
| 2390 } | 2357 } |
| 2391 | 2358 |
| 2392 | 2359 |
| 2393 // Called when the top-level V8 mutex is destroyed. | 2360 // Called when the top-level V8 mutex is destroyed. |
| 2394 void Bootstrapper::FreeThreadResources() { | 2361 void Bootstrapper::FreeThreadResources() { |
| 2395 ASSERT(!IsActive()); | 2362 ASSERT(!IsActive()); |
| 2396 } | 2363 } |
| 2397 | 2364 |
| 2398 } } // namespace v8::internal | 2365 } } // namespace v8::internal |
| OLD | NEW |