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

Side by Side Diff: src/runtime/runtime-simd.cc

Issue 1266013006: [stubs] Unify (and optimize) implementation of ToObject. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add missing support for %_ToObject in TurboFan and Crankshaft. Created 5 years, 4 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/runtime/runtime-object.cc ('k') | src/runtime/runtime-symbol.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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/arguments.h" 7 #include "src/arguments.h"
8 #include "src/base/macros.h" 8 #include "src/base/macros.h"
9 #include "src/conversions.h" 9 #include "src/conversions.h"
10 #include "src/runtime/runtime-utils.h" 10 #include "src/runtime/runtime-utils.h"
(...skipping 15 matching lines...) Expand all
26 DCHECK(args.length() == 4); \ 26 DCHECK(args.length() == 4); \
27 CONVERT_NUMBER_ARG_HANDLE_CHECKED(w, 0); \ 27 CONVERT_NUMBER_ARG_HANDLE_CHECKED(w, 0); \
28 CONVERT_NUMBER_ARG_HANDLE_CHECKED(x, 1); \ 28 CONVERT_NUMBER_ARG_HANDLE_CHECKED(x, 1); \
29 CONVERT_NUMBER_ARG_HANDLE_CHECKED(y, 2); \ 29 CONVERT_NUMBER_ARG_HANDLE_CHECKED(y, 2); \
30 CONVERT_NUMBER_ARG_HANDLE_CHECKED(z, 3); \ 30 CONVERT_NUMBER_ARG_HANDLE_CHECKED(z, 3); \
31 return *isolate->factory()->NewFloat32x4( \ 31 return *isolate->factory()->NewFloat32x4( \
32 NumberTo##type##Component(*w), NumberTo##type##Component(*x), \ 32 NumberTo##type##Component(*w), NumberTo##type##Component(*x), \
33 NumberTo##type##Component(*y), NumberTo##type##Component(*z)); \ 33 NumberTo##type##Component(*y), NumberTo##type##Component(*z)); \
34 } 34 }
35 35
36 #define SIMD_CREATE_WRAPPER_FUNCTION(type) \
37 RUNTIME_FUNCTION(Runtime_New##type##Wrapper) { \
38 HandleScope scope(isolate); \
39 DCHECK(args.length() == 1); \
40 CONVERT_ARG_HANDLE_CHECKED(type, value, 0); \
41 return *Object::ToObject(isolate, value).ToHandleChecked(); \
42 }
43
44 #define SIMD_CHECK_FUNCTION(type) \ 36 #define SIMD_CHECK_FUNCTION(type) \
45 RUNTIME_FUNCTION(Runtime_##type##Check) { \ 37 RUNTIME_FUNCTION(Runtime_##type##Check) { \
46 HandleScope scope(isolate); \ 38 HandleScope scope(isolate); \
47 CONVERT_ARG_HANDLE_CHECKED(type, a, 0); \ 39 CONVERT_ARG_HANDLE_CHECKED(type, a, 0); \
48 return *a; \ 40 return *a; \
49 } 41 }
50 42
51 #define SIMD_EXTRACT_LANE_FUNCTION(type, lanes) \ 43 #define SIMD_EXTRACT_LANE_FUNCTION(type, lanes) \
52 RUNTIME_FUNCTION(Runtime_##type##ExtractLane) { \ 44 RUNTIME_FUNCTION(Runtime_##type##ExtractLane) { \
53 HandleScope scope(isolate); \ 45 HandleScope scope(isolate); \
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
94 SameValueZero(a->get_lane(0), b->get_lane(0)) && \ 86 SameValueZero(a->get_lane(0), b->get_lane(0)) && \
95 SameValueZero(a->get_lane(1), b->get_lane(1)) && \ 87 SameValueZero(a->get_lane(1), b->get_lane(1)) && \
96 SameValueZero(a->get_lane(2), b->get_lane(2)) && \ 88 SameValueZero(a->get_lane(2), b->get_lane(2)) && \
97 SameValueZero(a->get_lane(3), b->get_lane(3))); \ 89 SameValueZero(a->get_lane(3), b->get_lane(3))); \
98 } 90 }
99 91
100 #define SIMD4_EXTRACT_LANE_FUNCTION(type) SIMD_EXTRACT_LANE_FUNCTION(type, 4) 92 #define SIMD4_EXTRACT_LANE_FUNCTION(type) SIMD_EXTRACT_LANE_FUNCTION(type, 4)
101 93
102 #define SIMD4_FUNCTIONS(type) \ 94 #define SIMD4_FUNCTIONS(type) \
103 SIMD4_CREATE_FUNCTION(type) \ 95 SIMD4_CREATE_FUNCTION(type) \
104 SIMD_CREATE_WRAPPER_FUNCTION(type) \
105 SIMD_CHECK_FUNCTION(type) \ 96 SIMD_CHECK_FUNCTION(type) \
106 SIMD4_EXTRACT_LANE_FUNCTION(type) \ 97 SIMD4_EXTRACT_LANE_FUNCTION(type) \
107 SIMD4_EQUALS_FUNCTION(type) \ 98 SIMD4_EQUALS_FUNCTION(type) \
108 SIMD4_SAME_VALUE_FUNCTION(type) \ 99 SIMD4_SAME_VALUE_FUNCTION(type) \
109 SIMD4_SAME_VALUE_ZERO_FUNCTION(type) 100 SIMD4_SAME_VALUE_ZERO_FUNCTION(type)
110 101
111 102
112 namespace v8 { 103 namespace v8 {
113 namespace internal { 104 namespace internal {
114 105
115 namespace { 106 namespace {
116 107
117 // Convert from Number object to float. 108 // Convert from Number object to float.
118 inline float NumberToFloat(Object* number) { 109 inline float NumberToFloat(Object* number) {
119 return DoubleToFloat32(number->Number()); 110 return DoubleToFloat32(number->Number());
120 } 111 }
121 112
122 113
123 inline bool Equals(float x, float y) { return x == y; } 114 inline bool Equals(float x, float y) { return x == y; }
124 115
125 } // namespace 116 } // namespace
126 117
127 SIMD4_FUNCTIONS(Float32x4) 118 SIMD4_FUNCTIONS(Float32x4)
128 } 119
129 } // namespace v8::internal 120 } // namespace internal
121 } // namespace v8
OLDNEW
« no previous file with comments | « src/runtime/runtime-object.cc ('k') | src/runtime/runtime-symbol.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698