src/cpu/sparc/vm/assembler_sparc.cpp

changeset 2350
2f644f85485d
parent 2344
ac637b7220d1
child 2399
7737fa7ec2b5
child 2423
b1a2afa37ec4
equal deleted inserted replaced
2349:5ddfcf4b079e 2350:2f644f85485d
1439 if (low10(lo) != 0) 1439 if (low10(lo) != 0)
1440 or3 ( d, low10(lo), d); 1440 or3 ( d, low10(lo), d);
1441 sllx(tmp, 32, tmp); 1441 sllx(tmp, 32, tmp);
1442 or3 (d, tmp, d); 1442 or3 (d, tmp, d);
1443 } 1443 }
1444 }
1445
1446 int MacroAssembler::size_of_set64(jlong value) {
1447 v9_dep();
1448
1449 int hi = (int)(value >> 32);
1450 int lo = (int)(value & ~0);
1451 int count = 0;
1452
1453 // (Matcher::isSimpleConstant64 knows about the following optimizations.)
1454 if (Assembler::is_simm13(lo) && value == lo) {
1455 count++;
1456 } else if (hi == 0) {
1457 count++;
1458 if (low10(lo) != 0)
1459 count++;
1460 }
1461 else if (hi == -1) {
1462 count += 2;
1463 }
1464 else if (lo == 0) {
1465 if (Assembler::is_simm13(hi)) {
1466 count++;
1467 } else {
1468 count++;
1469 if (low10(hi) != 0)
1470 count++;
1471 }
1472 count++;
1473 }
1474 else {
1475 count += 2;
1476 if (low10(hi) != 0)
1477 count++;
1478 if (low10(lo) != 0)
1479 count++;
1480 count += 2;
1481 }
1482 return count;
1444 } 1483 }
1445 1484
1446 // compute size in bytes of sparc frame, given 1485 // compute size in bytes of sparc frame, given
1447 // number of extraWords 1486 // number of extraWords
1448 int MacroAssembler::total_frame_size_in_bytes(int extraWords) { 1487 int MacroAssembler::total_frame_size_in_bytes(int extraWords) {

mercurial