| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 9746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9757 if (FLAG_allocation_site_pretenuring) { | 9757 if (FLAG_allocation_site_pretenuring) { |
| 9758 pretenure_flag = site_context->current()->GetPretenureMode(); | 9758 pretenure_flag = site_context->current()->GetPretenureMode(); |
| 9759 Handle<AllocationSite> site(site_context->current()); | 9759 Handle<AllocationSite> site(site_context->current()); |
| 9760 AllocationSite::AddDependentCompilationInfo( | 9760 AllocationSite::AddDependentCompilationInfo( |
| 9761 site, AllocationSite::TENURING, top_info()); | 9761 site, AllocationSite::TENURING, top_info()); |
| 9762 } | 9762 } |
| 9763 | 9763 |
| 9764 HInstruction* object = Add<HAllocate>(object_size_constant, type, | 9764 HInstruction* object = Add<HAllocate>(object_size_constant, type, |
| 9765 pretenure_flag, instance_type, site_context->current()); | 9765 pretenure_flag, instance_type, site_context->current()); |
| 9766 | 9766 |
| 9767 // If allocation folding reaches Page::kMaxRegularHeapObjectSize the |
| 9768 // elements array may not get folded into the object. Hence, we set the |
| 9769 // elements pointer to empty fixed array and let store elimination remove |
| 9770 // this store in the folding case. |
| 9771 HConstant* empty_fixed_array = Add<HConstant>( |
| 9772 isolate()->factory()->empty_fixed_array()); |
| 9773 Add<HStoreNamedField>(object, HObjectAccess::ForElementsPointer(), |
| 9774 empty_fixed_array, INITIALIZING_STORE); |
| 9775 |
| 9767 BuildEmitObjectHeader(boilerplate_object, object); | 9776 BuildEmitObjectHeader(boilerplate_object, object); |
| 9768 | 9777 |
| 9769 Handle<FixedArrayBase> elements(boilerplate_object->elements()); | 9778 Handle<FixedArrayBase> elements(boilerplate_object->elements()); |
| 9770 int elements_size = (elements->length() > 0 && | 9779 int elements_size = (elements->length() > 0 && |
| 9771 elements->map() != isolate()->heap()->fixed_cow_array_map()) ? | 9780 elements->map() != isolate()->heap()->fixed_cow_array_map()) ? |
| 9772 elements->Size() : 0; | 9781 elements->Size() : 0; |
| 9773 | 9782 |
| 9774 HInstruction* object_elements = NULL; | 9783 HInstruction* object_elements = NULL; |
| 9775 if (elements_size > 0) { | 9784 if (elements_size > 0) { |
| 9776 HValue* object_elements_size = Add<HConstant>(elements_size); | 9785 HValue* object_elements_size = Add<HConstant>(elements_size); |
| (...skipping 1474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11251 if (ShouldProduceTraceOutput()) { | 11260 if (ShouldProduceTraceOutput()) { |
| 11252 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 11261 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
| 11253 } | 11262 } |
| 11254 | 11263 |
| 11255 #ifdef DEBUG | 11264 #ifdef DEBUG |
| 11256 graph_->Verify(false); // No full verify. | 11265 graph_->Verify(false); // No full verify. |
| 11257 #endif | 11266 #endif |
| 11258 } | 11267 } |
| 11259 | 11268 |
| 11260 } } // namespace v8::internal | 11269 } } // namespace v8::internal |
| OLD | NEW |