< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.lir/src/org/graalvm/compiler/lir/gen/LIRGeneratorTool.java
Print this page
rev 52509 : [mq]: graal2
*** 58,68 ****
public interface LIRGeneratorTool extends DiagnosticLIRGeneratorTool, ValueKindFactory<LIRKind> {
/**
* Factory for creating moves.
*/
! public interface MoveFactory {
/**
* Checks whether the supplied constant can be used without loading it into a register for
* most operations, i.e., for commonly used arithmetic, logical, and comparison operations.
*
--- 58,68 ----
public interface LIRGeneratorTool extends DiagnosticLIRGeneratorTool, ValueKindFactory<LIRKind> {
/**
* Factory for creating moves.
*/
! interface MoveFactory {
/**
* Checks whether the supplied constant can be used without loading it into a register for
* most operations, i.e., for commonly used arithmetic, logical, and comparison operations.
*
*** 259,278 ****
@SuppressWarnings("unused")
default Variable emitArrayCompareTo(JavaKind kind1, JavaKind kind2, Value array1, Value array2, Value length1, Value length2) {
throw GraalError.unimplemented("String.compareTo substitution is not implemented on this architecture");
}
! Variable emitArrayEquals(JavaKind kind, Value array1, Value array2, Value length);
@SuppressWarnings("unused")
! default Variable emitStringIndexOf(Value sourcePointer, Value sourceCount, Value targetPointer, Value targetCount, int constantTargetCount) {
throw GraalError.unimplemented("String.indexOf substitution is not implemented on this architecture");
}
@SuppressWarnings("unused")
! default Variable emitArrayIndexOf(JavaKind kind, Value sourcePointer, Value sourceCount, Value charValue) {
! throw GraalError.unimplemented("String.indexOf substitution is not implemented on this architecture");
}
void emitBlackhole(Value operand);
LIRKind getLIRKind(Stamp stamp);
--- 259,293 ----
@SuppressWarnings("unused")
default Variable emitArrayCompareTo(JavaKind kind1, JavaKind kind2, Value array1, Value array2, Value length1, Value length2) {
throw GraalError.unimplemented("String.compareTo substitution is not implemented on this architecture");
}
! Variable emitArrayEquals(JavaKind kind, Value array1, Value array2, Value length, int constantLength, boolean directPointers);
@SuppressWarnings("unused")
! default Variable emitArrayIndexOf(JavaKind kind, boolean findTwoConsecutive, Value sourcePointer, Value sourceCount, Value... searchValues) {
throw GraalError.unimplemented("String.indexOf substitution is not implemented on this architecture");
}
+ /*
+ * The routines emitStringLatin1Inflate/3 and emitStringUTF16Compress/3 models a simplified
+ * version of
+ *
+ * emitStringLatin1Inflate(Value src, Value src_ndx, Value dst, Value dst_ndx, Value len) and
+ * emitStringUTF16Compress(Value src, Value src_ndx, Value dst, Value dst_ndx, Value len)
+ *
+ * respectively, where we have hoisted the offset address computations in a method replacement
+ * snippet.
+ */
@SuppressWarnings("unused")
! default void emitStringLatin1Inflate(Value src, Value dst, Value len) {
! throw GraalError.unimplemented("StringLatin1.inflate substitution is not implemented on this architecture");
! }
!
! @SuppressWarnings("unused")
! default Variable emitStringUTF16Compress(Value src, Value dst, Value len) {
! throw GraalError.unimplemented("StringUTF16.compress substitution is not implemented on this architecture");
}
void emitBlackhole(Value operand);
LIRKind getLIRKind(Stamp stamp);
*** 290,295 ****
--- 305,316 ----
}
default void emitConvertZeroToNull(AllocatableValue result, Value input) {
emitMove(result, input);
}
+
+ /**
+ * Emits an instruction that prevents speculative execution from proceeding: no instruction
+ * after this fence will execute until all previous instructions have retired.
+ */
+ void emitSpeculationFence();
}
< prev index next >