blob: b5e92af8f6e0277252b6b0473889796456613e1a [file] [log] [blame]
Ben Murdoch4a90d5f2016-03-22 12:00:34 +00001// Copyright 2014 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "src/arguments.h"
6#include "src/isolate-inl.h"
7#include "src/runtime/runtime-utils.h"
8
9namespace v8 {
10namespace internal {
11
12RUNTIME_FUNCTION(Runtime_Multiply) {
13 HandleScope scope(isolate);
14 DCHECK_EQ(2, args.length());
15 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
16 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
17 Handle<Object> result;
18 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
19 Object::Multiply(isolate, lhs, rhs));
20 return *result;
21}
22
23
24RUNTIME_FUNCTION(Runtime_Multiply_Strong) {
25 HandleScope scope(isolate);
26 DCHECK_EQ(2, args.length());
27 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
28 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
29 Handle<Object> result;
30 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
31 isolate, result, Object::Multiply(isolate, lhs, rhs, Strength::STRONG));
32 return *result;
33}
34
35
36RUNTIME_FUNCTION(Runtime_Divide) {
37 HandleScope scope(isolate);
38 DCHECK_EQ(2, args.length());
39 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
40 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
41 Handle<Object> result;
42 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
43 Object::Divide(isolate, lhs, rhs));
44 return *result;
45}
46
47
48RUNTIME_FUNCTION(Runtime_Divide_Strong) {
49 HandleScope scope(isolate);
50 DCHECK_EQ(2, args.length());
51 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
52 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
53 Handle<Object> result;
54 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
55 isolate, result, Object::Divide(isolate, lhs, rhs, Strength::STRONG));
56 return *result;
57}
58
59
60RUNTIME_FUNCTION(Runtime_Modulus) {
61 HandleScope scope(isolate);
62 DCHECK_EQ(2, args.length());
63 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
64 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
65 Handle<Object> result;
66 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
67 Object::Modulus(isolate, lhs, rhs));
68 return *result;
69}
70
71
72RUNTIME_FUNCTION(Runtime_Modulus_Strong) {
73 HandleScope scope(isolate);
74 DCHECK_EQ(2, args.length());
75 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
76 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
77 Handle<Object> result;
78 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
79 isolate, result, Object::Modulus(isolate, lhs, rhs, Strength::STRONG));
80 return *result;
81}
82
83
84RUNTIME_FUNCTION(Runtime_Add) {
85 HandleScope scope(isolate);
86 DCHECK_EQ(2, args.length());
87 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
88 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
89 Handle<Object> result;
90 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
91 Object::Add(isolate, lhs, rhs));
92 return *result;
93}
94
95
96RUNTIME_FUNCTION(Runtime_Add_Strong) {
97 HandleScope scope(isolate);
98 DCHECK_EQ(2, args.length());
99 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
100 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
101 Handle<Object> result;
102 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
103 isolate, result, Object::Add(isolate, lhs, rhs, Strength::STRONG));
104 return *result;
105}
106
107
108RUNTIME_FUNCTION(Runtime_Subtract) {
109 HandleScope scope(isolate);
110 DCHECK_EQ(2, args.length());
111 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
112 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
113 Handle<Object> result;
114 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
115 Object::Subtract(isolate, lhs, rhs));
116 return *result;
117}
118
119
120RUNTIME_FUNCTION(Runtime_Subtract_Strong) {
121 HandleScope scope(isolate);
122 DCHECK_EQ(2, args.length());
123 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
124 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
125 Handle<Object> result;
126 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
127 isolate, result, Object::Subtract(isolate, lhs, rhs, Strength::STRONG));
128 return *result;
129}
130
131
132RUNTIME_FUNCTION(Runtime_ShiftLeft) {
133 HandleScope scope(isolate);
134 DCHECK_EQ(2, args.length());
135 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
136 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
137 Handle<Object> result;
138 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
139 Object::ShiftLeft(isolate, lhs, rhs));
140 return *result;
141}
142
143
144RUNTIME_FUNCTION(Runtime_ShiftLeft_Strong) {
145 HandleScope scope(isolate);
146 DCHECK_EQ(2, args.length());
147 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
148 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
149 Handle<Object> result;
150 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
151 isolate, result, Object::ShiftLeft(isolate, lhs, rhs, Strength::STRONG));
152 return *result;
153}
154
155
156RUNTIME_FUNCTION(Runtime_ShiftRight) {
157 HandleScope scope(isolate);
158 DCHECK_EQ(2, args.length());
159 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
160 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
161 Handle<Object> result;
162 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
163 Object::ShiftRight(isolate, lhs, rhs));
164 return *result;
165}
166
167
168RUNTIME_FUNCTION(Runtime_ShiftRight_Strong) {
169 HandleScope scope(isolate);
170 DCHECK_EQ(2, args.length());
171 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
172 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
173 Handle<Object> result;
174 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
175 isolate, result, Object::ShiftRight(isolate, lhs, rhs, Strength::STRONG));
176 return *result;
177}
178
179
180RUNTIME_FUNCTION(Runtime_ShiftRightLogical) {
181 HandleScope scope(isolate);
182 DCHECK_EQ(2, args.length());
183 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
184 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
185 Handle<Object> result;
186 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
187 isolate, result, Object::ShiftRightLogical(isolate, lhs, rhs));
188 return *result;
189}
190
191
192RUNTIME_FUNCTION(Runtime_ShiftRightLogical_Strong) {
193 HandleScope scope(isolate);
194 DCHECK_EQ(2, args.length());
195 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
196 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
197 Handle<Object> result;
198 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
199 isolate, result,
200 Object::ShiftRightLogical(isolate, lhs, rhs, Strength::STRONG));
201 return *result;
202}
203
204
205RUNTIME_FUNCTION(Runtime_BitwiseAnd) {
206 HandleScope scope(isolate);
207 DCHECK_EQ(2, args.length());
208 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
209 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
210 Handle<Object> result;
211 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
212 Object::BitwiseAnd(isolate, lhs, rhs));
213 return *result;
214}
215
216
217RUNTIME_FUNCTION(Runtime_BitwiseAnd_Strong) {
218 HandleScope scope(isolate);
219 DCHECK_EQ(2, args.length());
220 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
221 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
222 Handle<Object> result;
223 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
224 isolate, result, Object::BitwiseAnd(isolate, lhs, rhs, Strength::STRONG));
225 return *result;
226}
227
228
229RUNTIME_FUNCTION(Runtime_BitwiseOr) {
230 HandleScope scope(isolate);
231 DCHECK_EQ(2, args.length());
232 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
233 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
234 Handle<Object> result;
235 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
236 Object::BitwiseOr(isolate, lhs, rhs));
237 return *result;
238}
239
240
241RUNTIME_FUNCTION(Runtime_BitwiseOr_Strong) {
242 HandleScope scope(isolate);
243 DCHECK_EQ(2, args.length());
244 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
245 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
246 Handle<Object> result;
247 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
248 isolate, result, Object::BitwiseOr(isolate, lhs, rhs, Strength::STRONG));
249 return *result;
250}
251
252
253RUNTIME_FUNCTION(Runtime_BitwiseXor) {
254 HandleScope scope(isolate);
255 DCHECK_EQ(2, args.length());
256 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
257 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
258 Handle<Object> result;
259 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
260 Object::BitwiseXor(isolate, lhs, rhs));
261 return *result;
262}
263
264
265RUNTIME_FUNCTION(Runtime_BitwiseXor_Strong) {
266 HandleScope scope(isolate);
267 DCHECK_EQ(2, args.length());
268 CONVERT_ARG_HANDLE_CHECKED(Object, lhs, 0);
269 CONVERT_ARG_HANDLE_CHECKED(Object, rhs, 1);
270 Handle<Object> result;
271 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
272 isolate, result, Object::BitwiseXor(isolate, lhs, rhs, Strength::STRONG));
273 return *result;
274}
275
276} // namespace internal
277} // namespace v8