| 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 3809 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3820 constructor->initial_map(), pretenure); | 3820 constructor->initial_map(), pretenure); |
| 3821 #ifdef DEBUG | 3821 #ifdef DEBUG |
| 3822 // Make sure result is NOT a global object if valid. | 3822 // Make sure result is NOT a global object if valid. |
| 3823 Object* non_failure; | 3823 Object* non_failure; |
| 3824 ASSERT(!result->ToObject(&non_failure) || !non_failure->IsGlobalObject()); | 3824 ASSERT(!result->ToObject(&non_failure) || !non_failure->IsGlobalObject()); |
| 3825 #endif | 3825 #endif |
| 3826 return result; | 3826 return result; |
| 3827 } | 3827 } |
| 3828 | 3828 |
| 3829 | 3829 |
| 3830 MaybeObject* Heap::AllocateJSModule() { |
| 3831 // Allocate a fresh map. Modules do not have a prototype. |
| 3832 Map* map; |
| 3833 MaybeObject* maybe_map = AllocateMap(JS_MODULE_TYPE, JSModule::kSize); |
| 3834 if (!maybe_map->To(&map)) return maybe_map; |
| 3835 // Allocate the object based on the map. |
| 3836 return AllocateJSObjectFromMap(map, TENURED); |
| 3837 } |
| 3838 |
| 3839 |
| 3830 MaybeObject* Heap::AllocateJSArrayAndStorage( | 3840 MaybeObject* Heap::AllocateJSArrayAndStorage( |
| 3831 ElementsKind elements_kind, | 3841 ElementsKind elements_kind, |
| 3832 int length, | 3842 int length, |
| 3833 int capacity, | 3843 int capacity, |
| 3834 ArrayStorageAllocationMode mode, | 3844 ArrayStorageAllocationMode mode, |
| 3835 PretenureFlag pretenure) { | 3845 PretenureFlag pretenure) { |
| 3836 ASSERT(capacity >= length); | 3846 ASSERT(capacity >= length); |
| 3837 MaybeObject* maybe_array = AllocateJSArray(elements_kind, pretenure); | 3847 MaybeObject* maybe_array = AllocateJSArray(elements_kind, pretenure); |
| 3838 JSArray* array; | 3848 JSArray* array; |
| 3839 if (!maybe_array->To(&array)) return maybe_array; | 3849 if (!maybe_array->To(&array)) return maybe_array; |
| (...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4694 context->set_map_no_write_barrier(global_context_map()); | 4704 context->set_map_no_write_barrier(global_context_map()); |
| 4695 context->set_smi_js_array_map(undefined_value()); | 4705 context->set_smi_js_array_map(undefined_value()); |
| 4696 context->set_double_js_array_map(undefined_value()); | 4706 context->set_double_js_array_map(undefined_value()); |
| 4697 context->set_object_js_array_map(undefined_value()); | 4707 context->set_object_js_array_map(undefined_value()); |
| 4698 ASSERT(context->IsGlobalContext()); | 4708 ASSERT(context->IsGlobalContext()); |
| 4699 ASSERT(result->IsContext()); | 4709 ASSERT(result->IsContext()); |
| 4700 return result; | 4710 return result; |
| 4701 } | 4711 } |
| 4702 | 4712 |
| 4703 | 4713 |
| 4714 MaybeObject* Heap::AllocateModuleContext(Context* previous, |
| 4715 ScopeInfo* scope_info) { |
| 4716 Object* result; |
| 4717 { MaybeObject* maybe_result = |
| 4718 AllocateFixedArrayWithHoles(scope_info->ContextLength(), TENURED); |
| 4719 if (!maybe_result->ToObject(&result)) return maybe_result; |
| 4720 } |
| 4721 Context* context = reinterpret_cast<Context*>(result); |
| 4722 context->set_map_no_write_barrier(module_context_map()); |
| 4723 context->set_previous(previous); |
| 4724 context->set_extension(scope_info); |
| 4725 context->set_global(previous->global()); |
| 4726 return context; |
| 4727 } |
| 4728 |
| 4729 |
| 4704 MaybeObject* Heap::AllocateFunctionContext(int length, JSFunction* function) { | 4730 MaybeObject* Heap::AllocateFunctionContext(int length, JSFunction* function) { |
| 4705 ASSERT(length >= Context::MIN_CONTEXT_SLOTS); | 4731 ASSERT(length >= Context::MIN_CONTEXT_SLOTS); |
| 4706 Object* result; | 4732 Object* result; |
| 4707 { MaybeObject* maybe_result = AllocateFixedArray(length); | 4733 { MaybeObject* maybe_result = AllocateFixedArray(length); |
| 4708 if (!maybe_result->ToObject(&result)) return maybe_result; | 4734 if (!maybe_result->ToObject(&result)) return maybe_result; |
| 4709 } | 4735 } |
| 4710 Context* context = reinterpret_cast<Context*>(result); | 4736 Context* context = reinterpret_cast<Context*>(result); |
| 4711 context->set_map_no_write_barrier(function_context_map()); | 4737 context->set_map_no_write_barrier(function_context_map()); |
| 4712 context->set_closure(function); | 4738 context->set_closure(function); |
| 4713 context->set_previous(function->context()); | 4739 context->set_previous(function->context()); |
| (...skipping 2266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6980 } else { | 7006 } else { |
| 6981 p ^= 0x1d1ed & (Page::kPageSize - 1); // I died. | 7007 p ^= 0x1d1ed & (Page::kPageSize - 1); // I died. |
| 6982 } | 7008 } |
| 6983 remembered_unmapped_pages_[remembered_unmapped_pages_index_] = | 7009 remembered_unmapped_pages_[remembered_unmapped_pages_index_] = |
| 6984 reinterpret_cast<Address>(p); | 7010 reinterpret_cast<Address>(p); |
| 6985 remembered_unmapped_pages_index_++; | 7011 remembered_unmapped_pages_index_++; |
| 6986 remembered_unmapped_pages_index_ %= kRememberedUnmappedPages; | 7012 remembered_unmapped_pages_index_ %= kRememberedUnmappedPages; |
| 6987 } | 7013 } |
| 6988 | 7014 |
| 6989 } } // namespace v8::internal | 7015 } } // namespace v8::internal |
| OLD | NEW |