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 4737 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4748 } | 4748 } |
4749 } | 4749 } |
4750 if (!maybe_elms->To(&elms)) return maybe_elms; | 4750 if (!maybe_elms->To(&elms)) return maybe_elms; |
4751 | 4751 |
4752 array->set_elements(elms); | 4752 array->set_elements(elms); |
4753 array->set_length(Smi::FromInt(length)); | 4753 array->set_length(Smi::FromInt(length)); |
4754 return array; | 4754 return array; |
4755 } | 4755 } |
4756 | 4756 |
4757 | 4757 |
4758 MaybeObject* Heap::AllocateJSArrayAndStorageWithAllocationSite( | |
4759 ElementsKind elements_kind, | |
4760 int length, | |
4761 int capacity, | |
4762 Handle<AllocationSite> allocation_site, | |
4763 ArrayStorageAllocationMode mode) { | |
4764 MaybeObject* maybe_array = AllocateJSArrayWithAllocationSite(elements_kind, | |
4765 allocation_site); | |
4766 JSArray* array; | |
4767 if (!maybe_array->To(&array)) return maybe_array; | |
4768 return AllocateJSArrayStorage(array, length, capacity, mode); | |
4769 } | |
4770 | |
4771 | |
4772 MaybeObject* Heap::AllocateJSArrayStorage( | 4758 MaybeObject* Heap::AllocateJSArrayStorage( |
4773 JSArray* array, | 4759 JSArray* array, |
4774 int length, | 4760 int length, |
4775 int capacity, | 4761 int capacity, |
4776 ArrayStorageAllocationMode mode) { | 4762 ArrayStorageAllocationMode mode) { |
4777 ASSERT(capacity >= length); | 4763 ASSERT(capacity >= length); |
4778 | 4764 |
4779 if (capacity == 0) { | 4765 if (capacity == 0) { |
4780 array->set_length(Smi::FromInt(0)); | 4766 array->set_length(Smi::FromInt(0)); |
4781 array->set_elements(empty_fixed_array()); | 4767 array->set_elements(empty_fixed_array()); |
(...skipping 697 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5479 PretenureFlag pretenure) { | 5465 PretenureFlag pretenure) { |
5480 Context* native_context = isolate()->context()->native_context(); | 5466 Context* native_context = isolate()->context()->native_context(); |
5481 JSFunction* array_function = native_context->array_function(); | 5467 JSFunction* array_function = native_context->array_function(); |
5482 Map* map = array_function->initial_map(); | 5468 Map* map = array_function->initial_map(); |
5483 Map* transition_map = isolate()->get_initial_js_array_map(elements_kind); | 5469 Map* transition_map = isolate()->get_initial_js_array_map(elements_kind); |
5484 if (transition_map != NULL) map = transition_map; | 5470 if (transition_map != NULL) map = transition_map; |
5485 return AllocateJSObjectFromMap(map, pretenure); | 5471 return AllocateJSObjectFromMap(map, pretenure); |
5486 } | 5472 } |
5487 | 5473 |
5488 | 5474 |
5489 MaybeObject* Heap::AllocateJSArrayWithAllocationSite( | |
5490 ElementsKind elements_kind, | |
5491 Handle<AllocationSite> allocation_site) { | |
5492 Context* native_context = isolate()->context()->native_context(); | |
5493 JSFunction* array_function = native_context->array_function(); | |
5494 Map* map = array_function->initial_map(); | |
5495 Object* maybe_map_array = native_context->js_array_maps(); | |
5496 if (!maybe_map_array->IsUndefined()) { | |
5497 Object* maybe_transitioned_map = | |
5498 FixedArray::cast(maybe_map_array)->get(elements_kind); | |
5499 if (!maybe_transitioned_map->IsUndefined()) { | |
5500 map = Map::cast(maybe_transitioned_map); | |
5501 } | |
5502 } | |
5503 return AllocateJSObjectFromMapWithAllocationSite(map, allocation_site); | |
5504 } | |
5505 | |
5506 | |
5507 MaybeObject* Heap::AllocateEmptyFixedArray() { | 5475 MaybeObject* Heap::AllocateEmptyFixedArray() { |
5508 int size = FixedArray::SizeFor(0); | 5476 int size = FixedArray::SizeFor(0); |
5509 Object* result; | 5477 Object* result; |
5510 { MaybeObject* maybe_result = | 5478 { MaybeObject* maybe_result = |
5511 AllocateRaw(size, OLD_DATA_SPACE, OLD_DATA_SPACE); | 5479 AllocateRaw(size, OLD_DATA_SPACE, OLD_DATA_SPACE); |
5512 if (!maybe_result->ToObject(&result)) return maybe_result; | 5480 if (!maybe_result->ToObject(&result)) return maybe_result; |
5513 } | 5481 } |
5514 // Initialize the object. | 5482 // Initialize the object. |
5515 reinterpret_cast<FixedArray*>(result)->set_map_no_write_barrier( | 5483 reinterpret_cast<FixedArray*>(result)->set_map_no_write_barrier( |
5516 fixed_array_map()); | 5484 fixed_array_map()); |
(...skipping 2600 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8117 if (FLAG_concurrent_recompilation) { | 8085 if (FLAG_concurrent_recompilation) { |
8118 heap_->relocation_mutex_->Lock(); | 8086 heap_->relocation_mutex_->Lock(); |
8119 #ifdef DEBUG | 8087 #ifdef DEBUG |
8120 heap_->relocation_mutex_locked_by_optimizer_thread_ = | 8088 heap_->relocation_mutex_locked_by_optimizer_thread_ = |
8121 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); | 8089 heap_->isolate()->optimizing_compiler_thread()->IsOptimizerThread(); |
8122 #endif // DEBUG | 8090 #endif // DEBUG |
8123 } | 8091 } |
8124 } | 8092 } |
8125 | 8093 |
8126 } } // namespace v8::internal | 8094 } } // namespace v8::internal |
OLD | NEW |