OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "hydrogen.h" | 5 #include "hydrogen.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "v8.h" | 9 #include "v8.h" |
10 #include "allocation-site-scopes.h" | 10 #include "allocation-site-scopes.h" |
(...skipping 683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 boolean_value, \ | 694 boolean_value, \ |
695 false, \ | 695 false, \ |
696 ODDBALL_TYPE); \ | 696 ODDBALL_TYPE); \ |
697 constant->InsertAfter(entry_block()->first()); \ | 697 constant->InsertAfter(entry_block()->first()); \ |
698 constant_##name##_.set(constant); \ | 698 constant_##name##_.set(constant); \ |
699 } \ | 699 } \ |
700 return ReinsertConstantIfNecessary(constant_##name##_.get()); \ | 700 return ReinsertConstantIfNecessary(constant_##name##_.get()); \ |
701 } | 701 } |
702 | 702 |
703 | 703 |
704 DEFINE_GET_CONSTANT(Undefined, undefined, undefined, HType::Tagged(), false) | 704 DEFINE_GET_CONSTANT(Undefined, undefined, undefined, HType::Undefined(), false) |
705 DEFINE_GET_CONSTANT(True, true, boolean, HType::Boolean(), true) | 705 DEFINE_GET_CONSTANT(True, true, boolean, HType::Boolean(), true) |
706 DEFINE_GET_CONSTANT(False, false, boolean, HType::Boolean(), false) | 706 DEFINE_GET_CONSTANT(False, false, boolean, HType::Boolean(), false) |
707 DEFINE_GET_CONSTANT(Hole, the_hole, the_hole, HType::Tagged(), false) | 707 DEFINE_GET_CONSTANT(Hole, the_hole, the_hole, HType::None(), false) |
708 DEFINE_GET_CONSTANT(Null, null, null, HType::Tagged(), false) | 708 DEFINE_GET_CONSTANT(Null, null, null, HType::Null(), false) |
709 | 709 |
710 | 710 |
711 #undef DEFINE_GET_CONSTANT | 711 #undef DEFINE_GET_CONSTANT |
712 | 712 |
713 #define DEFINE_IS_CONSTANT(Name, name) \ | 713 #define DEFINE_IS_CONSTANT(Name, name) \ |
714 bool HGraph::IsConstant##Name(HConstant* constant) { \ | 714 bool HGraph::IsConstant##Name(HConstant* constant) { \ |
715 return constant_##name##_.is_set() && constant == constant_##name##_.get(); \ | 715 return constant_##name##_.is_set() && constant == constant_##name##_.get(); \ |
716 } | 716 } |
717 DEFINE_IS_CONSTANT(Undefined, undefined) | 717 DEFINE_IS_CONSTANT(Undefined, undefined) |
718 DEFINE_IS_CONSTANT(0, 0) | 718 DEFINE_IS_CONSTANT(0, 0) |
(...skipping 827 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1546 | 1546 |
1547 size = AddUncasted<HShl>(size, Add<HConstant>(kPointerSizeLog2)); | 1547 size = AddUncasted<HShl>(size, Add<HConstant>(kPointerSizeLog2)); |
1548 size = AddUncasted<HAdd>(size, Add<HConstant>(kHeaderSize)); | 1548 size = AddUncasted<HAdd>(size, Add<HConstant>(kHeaderSize)); |
1549 | 1549 |
1550 // Allocate the JSRegExpResult and the FixedArray in one step. | 1550 // Allocate the JSRegExpResult and the FixedArray in one step. |
1551 HValue* result = Add<HAllocate>( | 1551 HValue* result = Add<HAllocate>( |
1552 size, HType::JSArray(), NOT_TENURED, JS_ARRAY_TYPE); | 1552 size, HType::JSArray(), NOT_TENURED, JS_ARRAY_TYPE); |
1553 | 1553 |
1554 // Determine the elements FixedArray. | 1554 // Determine the elements FixedArray. |
1555 HValue* elements = Add<HInnerAllocatedObject>( | 1555 HValue* elements = Add<HInnerAllocatedObject>( |
1556 result, Add<HConstant>(JSRegExpResult::kSize)); | 1556 result, Add<HConstant>(JSRegExpResult::kSize), HType::HeapObject()); |
1557 | 1557 |
1558 // Initialize the JSRegExpResult header. | 1558 // Initialize the JSRegExpResult header. |
1559 HValue* global_object = Add<HLoadNamedField>( | 1559 HValue* global_object = Add<HLoadNamedField>( |
1560 context(), static_cast<HValue*>(NULL), | 1560 context(), static_cast<HValue*>(NULL), |
1561 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); | 1561 HObjectAccess::ForContextSlot(Context::GLOBAL_OBJECT_INDEX)); |
1562 HValue* native_context = Add<HLoadNamedField>( | 1562 HValue* native_context = Add<HLoadNamedField>( |
1563 global_object, static_cast<HValue*>(NULL), | 1563 global_object, static_cast<HValue*>(NULL), |
1564 HObjectAccess::ForGlobalObjectNativeContext()); | 1564 HObjectAccess::ForGlobalObjectNativeContext()); |
1565 Add<HStoreNamedField>( | 1565 Add<HStoreNamedField>( |
1566 result, HObjectAccess::ForMap(), | 1566 result, HObjectAccess::ForMap(), |
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2286 } | 2286 } |
2287 | 2287 |
2288 HConstant* elements_size_value = Add<HConstant>(elements_size); | 2288 HConstant* elements_size_value = Add<HConstant>(elements_size); |
2289 HValue* mul = AddUncasted<HMul>(capacity, elements_size_value); | 2289 HValue* mul = AddUncasted<HMul>(capacity, elements_size_value); |
2290 mul->ClearFlag(HValue::kCanOverflow); | 2290 mul->ClearFlag(HValue::kCanOverflow); |
2291 | 2291 |
2292 HConstant* header_size = Add<HConstant>(FixedArray::kHeaderSize); | 2292 HConstant* header_size = Add<HConstant>(FixedArray::kHeaderSize); |
2293 HValue* total_size = AddUncasted<HAdd>(mul, header_size); | 2293 HValue* total_size = AddUncasted<HAdd>(mul, header_size); |
2294 total_size->ClearFlag(HValue::kCanOverflow); | 2294 total_size->ClearFlag(HValue::kCanOverflow); |
2295 | 2295 |
2296 return Add<HAllocate>(total_size, HType::NonPrimitive(), NOT_TENURED, | 2296 return Add<HAllocate>(total_size, HType::HeapObject(), NOT_TENURED, |
2297 instance_type); | 2297 instance_type); |
2298 } | 2298 } |
2299 | 2299 |
2300 | 2300 |
2301 void HGraphBuilder::BuildInitializeElementsHeader(HValue* elements, | 2301 void HGraphBuilder::BuildInitializeElementsHeader(HValue* elements, |
2302 ElementsKind kind, | 2302 ElementsKind kind, |
2303 HValue* capacity) { | 2303 HValue* capacity) { |
2304 Factory* factory = isolate()->factory(); | 2304 Factory* factory = isolate()->factory(); |
2305 Handle<Map> map = IsFastDoubleElementsKind(kind) | 2305 Handle<Map> map = IsFastDoubleElementsKind(kind) |
2306 ? factory->fixed_double_array_map() | 2306 ? factory->fixed_double_array_map() |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2345 BuildCreateAllocationMemento( | 2345 BuildCreateAllocationMemento( |
2346 array, Add<HConstant>(JSArray::kSize), allocation_site_payload); | 2346 array, Add<HConstant>(JSArray::kSize), allocation_site_payload); |
2347 } | 2347 } |
2348 | 2348 |
2349 int elements_location = JSArray::kSize; | 2349 int elements_location = JSArray::kSize; |
2350 if (mode == TRACK_ALLOCATION_SITE) { | 2350 if (mode == TRACK_ALLOCATION_SITE) { |
2351 elements_location += AllocationMemento::kSize; | 2351 elements_location += AllocationMemento::kSize; |
2352 } | 2352 } |
2353 | 2353 |
2354 HInnerAllocatedObject* elements = Add<HInnerAllocatedObject>( | 2354 HInnerAllocatedObject* elements = Add<HInnerAllocatedObject>( |
2355 array, Add<HConstant>(elements_location)); | 2355 array, Add<HConstant>(elements_location), HType::HeapObject()); |
2356 Add<HStoreNamedField>(array, HObjectAccess::ForElementsPointer(), elements); | 2356 Add<HStoreNamedField>(array, HObjectAccess::ForElementsPointer(), elements); |
2357 return elements; | 2357 return elements; |
2358 } | 2358 } |
2359 | 2359 |
2360 | 2360 |
2361 HInstruction* HGraphBuilder::AddElementAccess( | 2361 HInstruction* HGraphBuilder::AddElementAccess( |
2362 HValue* elements, | 2362 HValue* elements, |
2363 HValue* checked_key, | 2363 HValue* checked_key, |
2364 HValue* val, | 2364 HValue* val, |
2365 HValue* dependency, | 2365 HValue* dependency, |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2634 INITIALIZING_STORE); | 2634 INITIALIZING_STORE); |
2635 | 2635 |
2636 // Create an allocation site info if requested. | 2636 // Create an allocation site info if requested. |
2637 if (mode == TRACK_ALLOCATION_SITE) { | 2637 if (mode == TRACK_ALLOCATION_SITE) { |
2638 BuildCreateAllocationMemento( | 2638 BuildCreateAllocationMemento( |
2639 object, Add<HConstant>(JSArray::kSize), allocation_site); | 2639 object, Add<HConstant>(JSArray::kSize), allocation_site); |
2640 } | 2640 } |
2641 | 2641 |
2642 if (extra_size != NULL) { | 2642 if (extra_size != NULL) { |
2643 HValue* elements = Add<HInnerAllocatedObject>(object, | 2643 HValue* elements = Add<HInnerAllocatedObject>(object, |
2644 Add<HConstant>(array_size)); | 2644 Add<HConstant>(array_size), HType::HeapObject()); |
2645 if (return_elements != NULL) *return_elements = elements; | 2645 if (return_elements != NULL) *return_elements = elements; |
2646 } | 2646 } |
2647 | 2647 |
2648 return object; | 2648 return object; |
2649 } | 2649 } |
2650 | 2650 |
2651 | 2651 |
2652 HValue* HGraphBuilder::BuildCloneShallowArrayCow(HValue* boilerplate, | 2652 HValue* HGraphBuilder::BuildCloneShallowArrayCow(HValue* boilerplate, |
2653 HValue* allocation_site, | 2653 HValue* allocation_site, |
2654 AllocationSiteMode mode, | 2654 AllocationSiteMode mode, |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2792 if_nil.CaptureContinuation(continuation); | 2792 if_nil.CaptureContinuation(continuation); |
2793 } | 2793 } |
2794 | 2794 |
2795 | 2795 |
2796 void HGraphBuilder::BuildCreateAllocationMemento( | 2796 void HGraphBuilder::BuildCreateAllocationMemento( |
2797 HValue* previous_object, | 2797 HValue* previous_object, |
2798 HValue* previous_object_size, | 2798 HValue* previous_object_size, |
2799 HValue* allocation_site) { | 2799 HValue* allocation_site) { |
2800 ASSERT(allocation_site != NULL); | 2800 ASSERT(allocation_site != NULL); |
2801 HInnerAllocatedObject* allocation_memento = Add<HInnerAllocatedObject>( | 2801 HInnerAllocatedObject* allocation_memento = Add<HInnerAllocatedObject>( |
2802 previous_object, previous_object_size); | 2802 previous_object, previous_object_size, HType::HeapObject()); |
2803 AddStoreMapConstant( | 2803 AddStoreMapConstant( |
2804 allocation_memento, isolate()->factory()->allocation_memento_map()); | 2804 allocation_memento, isolate()->factory()->allocation_memento_map()); |
2805 Add<HStoreNamedField>( | 2805 Add<HStoreNamedField>( |
2806 allocation_memento, | 2806 allocation_memento, |
2807 HObjectAccess::ForAllocationMementoSite(), | 2807 HObjectAccess::ForAllocationMementoSite(), |
2808 allocation_site); | 2808 allocation_site); |
2809 if (FLAG_allocation_site_pretenuring) { | 2809 if (FLAG_allocation_site_pretenuring) { |
2810 HValue* memento_create_count = Add<HLoadNamedField>( | 2810 HValue* memento_create_count = Add<HLoadNamedField>( |
2811 allocation_site, static_cast<HValue*>(NULL), | 2811 allocation_site, static_cast<HValue*>(NULL), |
2812 HObjectAccess::ForAllocationSiteOffset( | 2812 HObjectAccess::ForAllocationSiteOffset( |
(...skipping 2665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5478 if (field_access.representation().IsDouble()) { | 5478 if (field_access.representation().IsDouble()) { |
5479 HObjectAccess heap_number_access = | 5479 HObjectAccess heap_number_access = |
5480 field_access.WithRepresentation(Representation::Tagged()); | 5480 field_access.WithRepresentation(Representation::Tagged()); |
5481 if (transition_to_field) { | 5481 if (transition_to_field) { |
5482 // The store requires a mutable HeapNumber to be allocated. | 5482 // The store requires a mutable HeapNumber to be allocated. |
5483 NoObservableSideEffectsScope no_side_effects(this); | 5483 NoObservableSideEffectsScope no_side_effects(this); |
5484 HInstruction* heap_number_size = Add<HConstant>(HeapNumber::kSize); | 5484 HInstruction* heap_number_size = Add<HConstant>(HeapNumber::kSize); |
5485 | 5485 |
5486 // TODO(hpayer): Allocation site pretenuring support. | 5486 // TODO(hpayer): Allocation site pretenuring support. |
5487 HInstruction* heap_number = Add<HAllocate>(heap_number_size, | 5487 HInstruction* heap_number = Add<HAllocate>(heap_number_size, |
5488 HType::Tagged(), | 5488 HType::HeapObject(), |
5489 NOT_TENURED, | 5489 NOT_TENURED, |
5490 HEAP_NUMBER_TYPE); | 5490 HEAP_NUMBER_TYPE); |
5491 AddStoreMapConstant(heap_number, isolate()->factory()->heap_number_map()); | 5491 AddStoreMapConstant(heap_number, isolate()->factory()->heap_number_map()); |
5492 Add<HStoreNamedField>(heap_number, HObjectAccess::ForHeapNumberValue(), | 5492 Add<HStoreNamedField>(heap_number, HObjectAccess::ForHeapNumberValue(), |
5493 value); | 5493 value); |
5494 instr = New<HStoreNamedField>(checked_object->ActualValue(), | 5494 instr = New<HStoreNamedField>(checked_object->ActualValue(), |
5495 heap_number_access, | 5495 heap_number_access, |
5496 heap_number); | 5496 heap_number); |
5497 } else { | 5497 } else { |
5498 // Already holds a HeapNumber; load the box and write its value field. | 5498 // Already holds a HeapNumber; load the box and write its value field. |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5666 field_maps_.Clear(); | 5666 field_maps_.Clear(); |
5667 return; | 5667 return; |
5668 } | 5668 } |
5669 field_maps_.Add(field_map, zone()); | 5669 field_maps_.Add(field_map, zone()); |
5670 it.Advance(); | 5670 it.Advance(); |
5671 } | 5671 } |
5672 field_maps_.Sort(); | 5672 field_maps_.Sort(); |
5673 ASSERT_EQ(num_field_maps, field_maps_.length()); | 5673 ASSERT_EQ(num_field_maps, field_maps_.length()); |
5674 | 5674 |
5675 // Determine field HType from field HeapType. | 5675 // Determine field HType from field HeapType. |
5676 if (field_type->Is(HeapType::Number())) { | 5676 field_type_ = HType::FromType<HeapType>(field_type); |
5677 field_type_ = HType::HeapNumber(); | 5677 ASSERT(field_type_.IsHeapObject()); |
5678 } else if (field_type->Is(HeapType::String())) { | |
5679 field_type_ = HType::String(); | |
5680 } else if (field_type->Is(HeapType::Boolean())) { | |
5681 field_type_ = HType::Boolean(); | |
5682 } else if (field_type->Is(HeapType::Array())) { | |
5683 field_type_ = HType::JSArray(); | |
5684 } else if (field_type->Is(HeapType::Object())) { | |
5685 field_type_ = HType::JSObject(); | |
5686 } else if (field_type->Is(HeapType::Null()) || | |
5687 field_type->Is(HeapType::Undefined())) { | |
5688 field_type_ = HType::NonPrimitive(); | |
5689 } | |
5690 | 5678 |
5691 // Add dependency on the map that introduced the field. | 5679 // Add dependency on the map that introduced the field. |
5692 Map::AddDependentCompilationInfo( | 5680 Map::AddDependentCompilationInfo( |
5693 handle(lookup_.GetFieldOwnerFromMap(*map), isolate()), | 5681 handle(lookup_.GetFieldOwnerFromMap(*map), isolate()), |
5694 DependentCode::kFieldTypeGroup, top_info()); | 5682 DependentCode::kFieldTypeGroup, top_info()); |
5695 } | 5683 } |
5696 | 5684 |
5697 | 5685 |
5698 bool HOptimizedGraphBuilder::PropertyAccessInfo::LookupInPrototypes() { | 5686 bool HOptimizedGraphBuilder::PropertyAccessInfo::LookupInPrototypes() { |
5699 Handle<Map> map = this->map(); | 5687 Handle<Map> map = this->map(); |
(...skipping 3089 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8789 HValue* buffer, HValue* byte_offset, HValue* length) { | 8777 HValue* buffer, HValue* byte_offset, HValue* length) { |
8790 Handle<Map> external_array_map( | 8778 Handle<Map> external_array_map( |
8791 isolate()->heap()->MapForExternalArrayType(array_type)); | 8779 isolate()->heap()->MapForExternalArrayType(array_type)); |
8792 | 8780 |
8793 // The HForceRepresentation is to prevent possible deopt on int-smi | 8781 // The HForceRepresentation is to prevent possible deopt on int-smi |
8794 // conversion after allocation but before the new object fields are set. | 8782 // conversion after allocation but before the new object fields are set. |
8795 length = AddUncasted<HForceRepresentation>(length, Representation::Smi()); | 8783 length = AddUncasted<HForceRepresentation>(length, Representation::Smi()); |
8796 HValue* elements = | 8784 HValue* elements = |
8797 Add<HAllocate>( | 8785 Add<HAllocate>( |
8798 Add<HConstant>(ExternalArray::kAlignedSize), | 8786 Add<HConstant>(ExternalArray::kAlignedSize), |
8799 HType::NonPrimitive(), | 8787 HType::HeapObject(), |
8800 NOT_TENURED, | 8788 NOT_TENURED, |
8801 external_array_map->instance_type()); | 8789 external_array_map->instance_type()); |
8802 | 8790 |
8803 AddStoreMapConstant(elements, external_array_map); | 8791 AddStoreMapConstant(elements, external_array_map); |
8804 Add<HStoreNamedField>(elements, | 8792 Add<HStoreNamedField>(elements, |
8805 HObjectAccess::ForFixedArrayLength(), length); | 8793 HObjectAccess::ForFixedArrayLength(), length); |
8806 | 8794 |
8807 HValue* backing_store = Add<HLoadNamedField>( | 8795 HValue* backing_store = Add<HLoadNamedField>( |
8808 buffer, static_cast<HValue*>(NULL), | 8796 buffer, static_cast<HValue*>(NULL), |
8809 HObjectAccess::ForJSArrayBufferBackingStore()); | 8797 HObjectAccess::ForJSArrayBufferBackingStore()); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8846 Add<HConstant>(FixedTypedArrayBase::kHeaderSize)); | 8834 Add<HConstant>(FixedTypedArrayBase::kHeaderSize)); |
8847 total_size->ClearFlag(HValue::kCanOverflow); | 8835 total_size->ClearFlag(HValue::kCanOverflow); |
8848 } | 8836 } |
8849 | 8837 |
8850 // The HForceRepresentation is to prevent possible deopt on int-smi | 8838 // The HForceRepresentation is to prevent possible deopt on int-smi |
8851 // conversion after allocation but before the new object fields are set. | 8839 // conversion after allocation but before the new object fields are set. |
8852 length = AddUncasted<HForceRepresentation>(length, Representation::Smi()); | 8840 length = AddUncasted<HForceRepresentation>(length, Representation::Smi()); |
8853 Handle<Map> fixed_typed_array_map( | 8841 Handle<Map> fixed_typed_array_map( |
8854 isolate()->heap()->MapForFixedTypedArray(array_type)); | 8842 isolate()->heap()->MapForFixedTypedArray(array_type)); |
8855 HValue* elements = | 8843 HValue* elements = |
8856 Add<HAllocate>(total_size, HType::NonPrimitive(), | 8844 Add<HAllocate>(total_size, HType::HeapObject(), |
8857 NOT_TENURED, fixed_typed_array_map->instance_type()); | 8845 NOT_TENURED, fixed_typed_array_map->instance_type()); |
8858 AddStoreMapConstant(elements, fixed_typed_array_map); | 8846 AddStoreMapConstant(elements, fixed_typed_array_map); |
8859 | 8847 |
8860 Add<HStoreNamedField>(elements, | 8848 Add<HStoreNamedField>(elements, |
8861 HObjectAccess::ForFixedArrayLength(), | 8849 HObjectAccess::ForFixedArrayLength(), |
8862 length); | 8850 length); |
8863 | 8851 |
8864 HValue* filler = Add<HConstant>(static_cast<int32_t>(0)); | 8852 HValue* filler = Add<HConstant>(static_cast<int32_t>(0)); |
8865 | 8853 |
8866 { | 8854 { |
(...skipping 1412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10279 Handle<FixedArray>::cast(elements))); | 10267 Handle<FixedArray>::cast(elements))); |
10280 boilerplate_object->set_elements(*elements); | 10268 boilerplate_object->set_elements(*elements); |
10281 } | 10269 } |
10282 | 10270 |
10283 HInstruction* object_elements = NULL; | 10271 HInstruction* object_elements = NULL; |
10284 if (elements_size > 0) { | 10272 if (elements_size > 0) { |
10285 HValue* object_elements_size = Add<HConstant>(elements_size); | 10273 HValue* object_elements_size = Add<HConstant>(elements_size); |
10286 InstanceType instance_type = boilerplate_object->HasFastDoubleElements() | 10274 InstanceType instance_type = boilerplate_object->HasFastDoubleElements() |
10287 ? FIXED_DOUBLE_ARRAY_TYPE : FIXED_ARRAY_TYPE; | 10275 ? FIXED_DOUBLE_ARRAY_TYPE : FIXED_ARRAY_TYPE; |
10288 object_elements = Add<HAllocate>( | 10276 object_elements = Add<HAllocate>( |
10289 object_elements_size, HType::NonPrimitive(), | 10277 object_elements_size, HType::HeapObject(), |
10290 pretenure_flag, instance_type, site_context->current()); | 10278 pretenure_flag, instance_type, site_context->current()); |
10291 } | 10279 } |
10292 BuildInitElementsInObjectHeader(boilerplate_object, object, object_elements); | 10280 BuildInitElementsInObjectHeader(boilerplate_object, object, object_elements); |
10293 | 10281 |
10294 // Copy object elements if non-COW. | 10282 // Copy object elements if non-COW. |
10295 if (object_elements != NULL) { | 10283 if (object_elements != NULL) { |
10296 BuildEmitElements(boilerplate_object, elements, object_elements, | 10284 BuildEmitElements(boilerplate_object, elements, object_elements, |
10297 site_context); | 10285 site_context); |
10298 } | 10286 } |
10299 | 10287 |
(...skipping 1500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11800 if (ShouldProduceTraceOutput()) { | 11788 if (ShouldProduceTraceOutput()) { |
11801 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); | 11789 isolate()->GetHTracer()->TraceHydrogen(name(), graph_); |
11802 } | 11790 } |
11803 | 11791 |
11804 #ifdef DEBUG | 11792 #ifdef DEBUG |
11805 graph_->Verify(false); // No full verify. | 11793 graph_->Verify(false); // No full verify. |
11806 #endif | 11794 #endif |
11807 } | 11795 } |
11808 | 11796 |
11809 } } // namespace v8::internal | 11797 } } // namespace v8::internal |
OLD | NEW |