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

Side by Side Diff: test/cctest/compiler/test-changes-lowering.cc

Issue 512753002: Disable some changes tests on ARM64. Also, fix the changes lowering to not use the more expensive T… (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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/compiler/change-lowering.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // 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 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 <limits> 5 #include <limits>
6 6
7 #include "src/compiler/change-lowering.h" 7 #include "src/compiler/change-lowering.h"
8 #include "src/compiler/control-builders.h" 8 #include "src/compiler/control-builders.h"
9 #include "src/compiler/generic-node-inl.h" 9 #include "src/compiler/generic-node-inl.h"
10 #include "src/compiler/js-graph.h" 10 #include "src/compiler/js-graph.h"
11 #include "src/compiler/node-properties-inl.h" 11 #include "src/compiler/node-properties-inl.h"
12 #include "src/compiler/pipeline.h" 12 #include "src/compiler/pipeline.h"
13 #include "src/compiler/simplified-node-factory.h" 13 #include "src/compiler/simplified-node-factory.h"
14 #include "src/compiler/typer.h" 14 #include "src/compiler/typer.h"
15 #include "src/compiler/verifier.h" 15 #include "src/compiler/verifier.h"
16 #include "src/execution.h" 16 #include "src/execution.h"
17 #include "src/globals.h"
17 #include "src/parser.h" 18 #include "src/parser.h"
18 #include "src/rewriter.h" 19 #include "src/rewriter.h"
19 #include "src/scopes.h" 20 #include "src/scopes.h"
20 #include "test/cctest/cctest.h" 21 #include "test/cctest/cctest.h"
21 #include "test/cctest/compiler/codegen-tester.h" 22 #include "test/cctest/compiler/codegen-tester.h"
22 #include "test/cctest/compiler/graph-builder-tester.h" 23 #include "test/cctest/compiler/graph-builder-tester.h"
23 #include "test/cctest/compiler/value-helper.h" 24 #include "test/cctest/compiler/value-helper.h"
24 25
25 using namespace v8::internal; 26 using namespace v8::internal;
26 using namespace v8::internal::compiler; 27 using namespace v8::internal::compiler;
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 } 296 }
296 297
297 if (Pipeline::SupportedTarget()) { 298 if (Pipeline::SupportedTarget()) {
298 Object* result = t.Call(0); 299 Object* result = t.Call(0);
299 Object* false_obj = t.heap()->false_value(); 300 Object* false_obj = t.heap()->false_value();
300 CHECK_EQ(false_obj, result); 301 CHECK_EQ(false_obj, result);
301 } 302 }
302 } 303 }
303 304
304 305
305 TEST(RunChangeInt32ToTagged) { 306 #ifndef V8_TARGET_ARCH_ARM64
307 // TODO(titzer): disabled on ARM64 because calling into the runtime to
308 // allocate uses the wrong stack pointer.
309 // TODO(titzer): disabled on ARM
310
311 TEST(RunChangeInt32ToTaggedSmi) {
306 ChangesLoweringTester<Object*> t; 312 ChangesLoweringTester<Object*> t;
307 int32_t input; 313 int32_t input;
308 t.BuildLoadAndLower(t.simplified()->ChangeInt32ToTagged(), 314 t.BuildLoadAndLower(t.simplified()->ChangeInt32ToTagged(),
309 t.machine()->Load(kMachInt32), &input); 315 t.machine()->Load(kMachInt32), &input);
310 316
311 if (Pipeline::SupportedTarget()) { 317 if (Pipeline::SupportedTarget()) {
312 FOR_INT32_INPUTS(i) { 318 FOR_INT32_INPUTS(i) {
313 input = *i; 319 input = *i;
314 Object* result = t.CallWithPotentialGC<Object>(); 320 if (!Smi::IsValid(input)) continue;
315 t.CheckNumber(static_cast<double>(input), result); 321 Object* result = t.Call();
316 }
317 }
318
319 if (Pipeline::SupportedTarget()) {
320 FOR_INT32_INPUTS(i) {
321 input = *i;
322 CcTest::heap()->DisableInlineAllocation();
323 Object* result = t.CallWithPotentialGC<Object>();
324 t.CheckNumber(static_cast<double>(input), result); 322 t.CheckNumber(static_cast<double>(input), result);
325 } 323 }
326 } 324 }
327 } 325 }
328 326
329 327
330 TEST(RunChangeUint32ToTagged) { 328 TEST(RunChangeUint32ToTaggedSmi) {
331 ChangesLoweringTester<Object*> t; 329 ChangesLoweringTester<Object*> t;
332 uint32_t input; 330 uint32_t input;
333 t.BuildLoadAndLower(t.simplified()->ChangeUint32ToTagged(), 331 t.BuildLoadAndLower(t.simplified()->ChangeUint32ToTagged(),
334 t.machine()->Load(kMachUint32), &input); 332 t.machine()->Load(kMachUint32), &input);
335 333
336 if (Pipeline::SupportedTarget()) { 334 if (Pipeline::SupportedTarget()) {
337 FOR_UINT32_INPUTS(i) { 335 FOR_UINT32_INPUTS(i) {
338 input = *i; 336 input = *i;
339 Object* result = t.CallWithPotentialGC<Object>(); 337 if (input > static_cast<uint32_t>(Smi::kMaxValue)) continue;
338 Object* result = t.Call();
340 double expected = static_cast<double>(input); 339 double expected = static_cast<double>(input);
341 t.CheckNumber(expected, result); 340 t.CheckNumber(expected, result);
342 } 341 }
343 } 342 }
343 }
344
345
346 TEST(RunChangeInt32ToTagged) {
347 ChangesLoweringTester<Object*> t;
348 int32_t input;
349 t.BuildLoadAndLower(t.simplified()->ChangeInt32ToTagged(),
350 t.machine()->Load(kMachInt32), &input);
344 351
345 if (Pipeline::SupportedTarget()) { 352 if (Pipeline::SupportedTarget()) {
346 FOR_UINT32_INPUTS(i) { 353 for (int m = 0; m < 3; m++) { // Try 3 GC modes.
347 input = *i; 354 FOR_INT32_INPUTS(i) {
348 CcTest::heap()->DisableInlineAllocation(); 355 if (m == 0) CcTest::heap()->EnableInlineAllocation();
349 Object* result = t.CallWithPotentialGC<Object>(); 356 if (m == 1) CcTest::heap()->DisableInlineAllocation();
350 double expected = static_cast<double>(static_cast<uint32_t>(input)); 357 if (m == 2) SimulateFullSpace(CcTest::heap()->new_space());
351 t.CheckNumber(expected, result); 358
359 input = *i;
360 Object* result = t.CallWithPotentialGC<Object>();
361 t.CheckNumber(static_cast<double>(input), result);
362 }
352 } 363 }
353 } 364 }
354 } 365 }
366
367
368 TEST(RunChangeUint32ToTagged) {
369 ChangesLoweringTester<Object*> t;
370 uint32_t input;
371 t.BuildLoadAndLower(t.simplified()->ChangeUint32ToTagged(),
372 t.machine()->Load(kMachUint32), &input);
373
374 if (Pipeline::SupportedTarget()) {
375 for (int m = 0; m < 3; m++) { // Try 3 GC modes.
376 FOR_UINT32_INPUTS(i) {
377 if (m == 0) CcTest::heap()->EnableInlineAllocation();
378 if (m == 1) CcTest::heap()->DisableInlineAllocation();
379 if (m == 2) SimulateFullSpace(CcTest::heap()->new_space());
380
381 input = *i;
382 Object* result = t.CallWithPotentialGC<Object>();
383 double expected = static_cast<double>(input);
384 t.CheckNumber(expected, result);
385 }
386 }
387 }
388 }
355 389
356 390
357 TEST(RunChangeFloat64ToTagged) { 391 TEST(RunChangeFloat64ToTagged) {
358 ChangesLoweringTester<Object*> t; 392 ChangesLoweringTester<Object*> t;
359 double input; 393 double input;
360 t.BuildLoadAndLower(t.simplified()->ChangeFloat64ToTagged(), 394 t.BuildLoadAndLower(t.simplified()->ChangeFloat64ToTagged(),
361 t.machine()->Load(kMachFloat64), &input); 395 t.machine()->Load(kMachFloat64), &input);
362 396
363 { 397 if (Pipeline::SupportedTarget()) {
364 FOR_FLOAT64_INPUTS(i) { 398 for (int m = 0; m < 3; m++) { // Try 3 GC modes.
365 input = *i; 399 FOR_FLOAT64_INPUTS(i) {
366 Object* result = t.CallWithPotentialGC<Object>(); 400 if (m == 0) CcTest::heap()->EnableInlineAllocation();
367 t.CheckNumber(input, result); 401 if (m == 1) CcTest::heap()->DisableInlineAllocation();
368 } 402 if (m == 2) SimulateFullSpace(CcTest::heap()->new_space());
369 }
370 403
371 { 404 input = *i;
372 FOR_FLOAT64_INPUTS(i) { 405 Object* result = t.CallWithPotentialGC<Object>();
373 input = *i; 406 t.CheckNumber(input, result);
374 CcTest::heap()->DisableInlineAllocation(); 407 }
375 Object* result = t.CallWithPotentialGC<Object>();
376 t.CheckNumber(input, result);
377 } 408 }
378 } 409 }
379 } 410 }
411
412 #endif // !V8_TARGET_ARCH_ARM64
OLDNEW
« no previous file with comments | « src/compiler/change-lowering.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698