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

Side by Side Diff: src/arm/code-stubs-arm.cc

Issue 1219943002: Expose SIMD.Float32x4 type to Javascript. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: samevalue.js tweak. Created 5 years, 5 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
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 #if V8_TARGET_ARCH_ARM 7 #if V8_TARGET_ARCH_ARM
8 8
9 #include "src/base/bits.h" 9 #include "src/base/bits.h"
10 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 // so we do the second best thing - test it ourselves. 248 // so we do the second best thing - test it ourselves.
249 // They are both equal and they are not both Smis so both of them are not 249 // They are both equal and they are not both Smis so both of them are not
250 // Smis. If it's not a heap number, then return equal. 250 // Smis. If it's not a heap number, then return equal.
251 if (cond == lt || cond == gt) { 251 if (cond == lt || cond == gt) {
252 // Call runtime on identical JSObjects. 252 // Call runtime on identical JSObjects.
253 __ CompareObjectType(r0, r4, r4, FIRST_SPEC_OBJECT_TYPE); 253 __ CompareObjectType(r0, r4, r4, FIRST_SPEC_OBJECT_TYPE);
254 __ b(ge, slow); 254 __ b(ge, slow);
255 // Call runtime on identical symbols since we need to throw a TypeError. 255 // Call runtime on identical symbols since we need to throw a TypeError.
256 __ cmp(r4, Operand(SYMBOL_TYPE)); 256 __ cmp(r4, Operand(SYMBOL_TYPE));
257 __ b(eq, slow); 257 __ b(eq, slow);
258 // Call runtime on identical SIMD values since we must throw a TypeError.
259 __ cmp(r4, Operand(FLOAT32X4_TYPE));
260 __ b(eq, slow);
258 if (is_strong(strength)) { 261 if (is_strong(strength)) {
259 // Call the runtime on anything that is converted in the semantics, since 262 // Call the runtime on anything that is converted in the semantics, since
260 // we need to throw a TypeError. Smis have already been ruled out. 263 // we need to throw a TypeError. Smis have already been ruled out.
261 __ cmp(r4, Operand(HEAP_NUMBER_TYPE)); 264 __ cmp(r4, Operand(HEAP_NUMBER_TYPE));
262 __ b(eq, &return_equal); 265 __ b(eq, &return_equal);
263 __ tst(r4, Operand(kIsNotStringMask)); 266 __ tst(r4, Operand(kIsNotStringMask));
264 __ b(ne, slow); 267 __ b(ne, slow);
265 } 268 }
266 } else { 269 } else {
267 __ CompareObjectType(r0, r4, r4, HEAP_NUMBER_TYPE); 270 __ CompareObjectType(r0, r4, r4, HEAP_NUMBER_TYPE);
268 __ b(eq, &heap_number); 271 __ b(eq, &heap_number);
269 // Comparing JS objects with <=, >= is complicated. 272 // Comparing JS objects with <=, >= is complicated.
270 if (cond != eq) { 273 if (cond != eq) {
271 __ cmp(r4, Operand(FIRST_SPEC_OBJECT_TYPE)); 274 __ cmp(r4, Operand(FIRST_SPEC_OBJECT_TYPE));
272 __ b(ge, slow); 275 __ b(ge, slow);
273 // Call runtime on identical symbols since we need to throw a TypeError. 276 // Call runtime on identical symbols since we need to throw a TypeError.
274 __ cmp(r4, Operand(SYMBOL_TYPE)); 277 __ cmp(r4, Operand(SYMBOL_TYPE));
275 __ b(eq, slow); 278 __ b(eq, slow);
279 // Call runtime on identical SIMD values since we must throw a TypeError.
280 __ cmp(r4, Operand(FLOAT32X4_TYPE));
281 __ b(eq, slow);
276 if (is_strong(strength)) { 282 if (is_strong(strength)) {
277 // Call the runtime on anything that is converted in the semantics, 283 // Call the runtime on anything that is converted in the semantics,
278 // since we need to throw a TypeError. Smis and heap numbers have 284 // since we need to throw a TypeError. Smis and heap numbers have
279 // already been ruled out. 285 // already been ruled out.
280 __ tst(r4, Operand(kIsNotStringMask)); 286 __ tst(r4, Operand(kIsNotStringMask));
281 __ b(ne, slow); 287 __ b(ne, slow);
282 } 288 }
283 // Normally here we fall through to return_equal, but undefined is 289 // Normally here we fall through to return_equal, but undefined is
284 // special: (undefined == undefined) == true, but 290 // special: (undefined == undefined) == true, but
285 // (undefined <= undefined) == false! See ECMAScript 11.8.5. 291 // (undefined <= undefined) == false! See ECMAScript 11.8.5.
(...skipping 5080 matching lines...) Expand 10 before | Expand all | Expand 10 after
5366 MemOperand(fp, 6 * kPointerSize), NULL); 5372 MemOperand(fp, 6 * kPointerSize), NULL);
5367 } 5373 }
5368 5374
5369 5375
5370 #undef __ 5376 #undef __
5371 5377
5372 } // namespace internal 5378 } // namespace internal
5373 } // namespace v8 5379 } // namespace v8
5374 5380
5375 #endif // V8_TARGET_ARCH_ARM 5381 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « include/v8.h ('k') | src/arm/full-codegen-arm.cc » ('j') | test/mjsunit/object-toprimitive.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698