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

Side by Side Diff: src/heap/heap.cc

Issue 1153373003: Add new Float32x4 type for SIMD.js. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix int type mismatches. Created 5 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
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/objects-visiting.cc » ('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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 "src/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/base/once.h" 10 #include "src/base/once.h"
(...skipping 2724 matching lines...) Expand 10 before | Expand all | Expand 10 after
2735 #define ALLOCATE_VARSIZE_MAP(instance_type, field_name) \ 2735 #define ALLOCATE_VARSIZE_MAP(instance_type, field_name) \
2736 ALLOCATE_MAP(instance_type, kVariableSizeSentinel, field_name) 2736 ALLOCATE_MAP(instance_type, kVariableSizeSentinel, field_name)
2737 2737
2738 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, fixed_cow_array) 2738 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, fixed_cow_array)
2739 DCHECK(fixed_array_map() != fixed_cow_array_map()); 2739 DCHECK(fixed_array_map() != fixed_cow_array_map());
2740 2740
2741 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, scope_info) 2741 ALLOCATE_VARSIZE_MAP(FIXED_ARRAY_TYPE, scope_info)
2742 ALLOCATE_MAP(HEAP_NUMBER_TYPE, HeapNumber::kSize, heap_number) 2742 ALLOCATE_MAP(HEAP_NUMBER_TYPE, HeapNumber::kSize, heap_number)
2743 ALLOCATE_MAP(MUTABLE_HEAP_NUMBER_TYPE, HeapNumber::kSize, 2743 ALLOCATE_MAP(MUTABLE_HEAP_NUMBER_TYPE, HeapNumber::kSize,
2744 mutable_heap_number) 2744 mutable_heap_number)
2745 ALLOCATE_MAP(FLOAT32X4_TYPE, Float32x4::kSize, float32x4)
2745 ALLOCATE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol) 2746 ALLOCATE_MAP(SYMBOL_TYPE, Symbol::kSize, symbol)
2746 ALLOCATE_MAP(FOREIGN_TYPE, Foreign::kSize, foreign) 2747 ALLOCATE_MAP(FOREIGN_TYPE, Foreign::kSize, foreign)
2747 2748
2748 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, the_hole); 2749 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, the_hole);
2749 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, boolean); 2750 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, boolean);
2750 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, uninitialized); 2751 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, uninitialized);
2751 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, arguments_marker); 2752 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, arguments_marker);
2752 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, no_interceptor_result_sentinel); 2753 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, no_interceptor_result_sentinel);
2753 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, exception); 2754 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, exception);
2754 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, termination_exception); 2755 ALLOCATE_MAP(ODDBALL_TYPE, Oddball::kSize, termination_exception);
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
2884 if (!allocation.To(&result)) return allocation; 2885 if (!allocation.To(&result)) return allocation;
2885 } 2886 }
2886 2887
2887 Map* map = mode == MUTABLE ? mutable_heap_number_map() : heap_number_map(); 2888 Map* map = mode == MUTABLE ? mutable_heap_number_map() : heap_number_map();
2888 HeapObject::cast(result)->set_map_no_write_barrier(map); 2889 HeapObject::cast(result)->set_map_no_write_barrier(map);
2889 HeapNumber::cast(result)->set_value(value); 2890 HeapNumber::cast(result)->set_value(value);
2890 return result; 2891 return result;
2891 } 2892 }
2892 2893
2893 2894
2895 AllocationResult Heap::AllocateFloat32x4(float w, float x, float y, float z,
2896 PretenureFlag pretenure) {
2897 // Statically ensure that it is safe to allocate SIMD values in paged
2898 // spaces.
2899 int size = Float32x4::kSize;
2900 STATIC_ASSERT(Float32x4::kSize <= Page::kMaxRegularHeapObjectSize);
2901
2902 AllocationSpace space = SelectSpace(size, pretenure);
2903
2904 HeapObject* result;
2905 {
2906 AllocationResult allocation =
2907 AllocateRaw(size, space, OLD_SPACE, kSimd128Unaligned);
2908 if (!allocation.To(&result)) return allocation;
2909 }
2910
2911 result->set_map_no_write_barrier(float32x4_map());
2912 Float32x4* float32x4 = Float32x4::cast(result);
2913 float32x4->set_lane(0, w);
2914 float32x4->set_lane(1, x);
2915 float32x4->set_lane(2, y);
2916 float32x4->set_lane(3, z);
2917 return result;
2918 }
2919
2920
2894 AllocationResult Heap::AllocateCell(Object* value) { 2921 AllocationResult Heap::AllocateCell(Object* value) {
2895 int size = Cell::kSize; 2922 int size = Cell::kSize;
2896 STATIC_ASSERT(Cell::kSize <= Page::kMaxRegularHeapObjectSize); 2923 STATIC_ASSERT(Cell::kSize <= Page::kMaxRegularHeapObjectSize);
2897 2924
2898 HeapObject* result; 2925 HeapObject* result;
2899 { 2926 {
2900 AllocationResult allocation = AllocateRaw(size, OLD_SPACE, OLD_SPACE); 2927 AllocationResult allocation = AllocateRaw(size, OLD_SPACE, OLD_SPACE);
2901 if (!allocation.To(&result)) return allocation; 2928 if (!allocation.To(&result)) return allocation;
2902 } 2929 }
2903 result->set_map_no_write_barrier(cell_map()); 2930 result->set_map_no_write_barrier(cell_map());
(...skipping 3767 matching lines...) Expand 10 before | Expand all | Expand 10 after
6671 *object_type = "CODE_TYPE"; \ 6698 *object_type = "CODE_TYPE"; \
6672 *object_sub_type = "CODE_AGE/" #name; \ 6699 *object_sub_type = "CODE_AGE/" #name; \
6673 return true; 6700 return true;
6674 CODE_AGE_LIST_COMPLETE(COMPARE_AND_RETURN_NAME) 6701 CODE_AGE_LIST_COMPLETE(COMPARE_AND_RETURN_NAME)
6675 #undef COMPARE_AND_RETURN_NAME 6702 #undef COMPARE_AND_RETURN_NAME
6676 } 6703 }
6677 return false; 6704 return false;
6678 } 6705 }
6679 } // namespace internal 6706 } // namespace internal
6680 } // namespace v8 6707 } // namespace v8
OLDNEW
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/objects-visiting.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698