1459 * exception level.
1460 *
1461 * @param exceptionCode exception code specifying why break was called. Non null.
1462 */
1463 public void brk(AArch64ExceptionCode exceptionCode) {
1464 super.brk(exceptionCode.encoding);
1465 }
1466
1467 public void pause() {
1468 throw GraalError.unimplemented();
1469 }
1470
1471 /**
1472 * Executes no-op instruction. No registers or flags are updated, except for PC.
1473 */
1474 public void nop() {
1475 super.hint(SystemHint.NOP);
1476 }
1477
1478 /**
1479 * Same as {@link #nop()}.
1480 */
1481 @Override
1482 public void ensureUniquePC() {
1483 nop();
1484 }
1485
1486 /**
1487 * Aligns PC.
1488 *
1489 * @param modulus Has to be positive multiple of 4.
1490 */
1491 @Override
1492 public void align(int modulus) {
1493 assert modulus > 0 && (modulus & 0x3) == 0 : "Modulus has to be a positive multiple of 4.";
1494 if (position() % modulus == 0) {
1495 return;
1496 }
1497 int offset = modulus - position() % modulus;
1498 for (int i = 0; i < offset; i += 4) {
|
1459 * exception level.
1460 *
1461 * @param exceptionCode exception code specifying why break was called. Non null.
1462 */
1463 public void brk(AArch64ExceptionCode exceptionCode) {
1464 super.brk(exceptionCode.encoding);
1465 }
1466
1467 public void pause() {
1468 throw GraalError.unimplemented();
1469 }
1470
1471 /**
1472 * Executes no-op instruction. No registers or flags are updated, except for PC.
1473 */
1474 public void nop() {
1475 super.hint(SystemHint.NOP);
1476 }
1477
1478 /**
1479 * Consumption of Speculative Data Barrier. This is a memory barrier that controls speculative
1480 * execution and data value prediction.
1481 */
1482 public void csdb() {
1483 super.hint(SystemHint.CSDB);
1484 }
1485
1486 /**
1487 * Same as {@link #nop()}.
1488 */
1489 @Override
1490 public void ensureUniquePC() {
1491 nop();
1492 }
1493
1494 /**
1495 * Aligns PC.
1496 *
1497 * @param modulus Has to be positive multiple of 4.
1498 */
1499 @Override
1500 public void align(int modulus) {
1501 assert modulus > 0 && (modulus & 0x3) == 0 : "Modulus has to be a positive multiple of 4.";
1502 if (position() % modulus == 0) {
1503 return;
1504 }
1505 int offset = modulus - position() % modulus;
1506 for (int i = 0; i < offset; i += 4) {
|