< 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 >