Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(381)

Side by Side Diff: src/hydrogen.cc

Issue 300893003: Refactor HType to get rid of various hacks. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix compilation. Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/hydrogen-instructions.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/code-stubs-hydrogen.cc ('k') | src/hydrogen-instructions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698