diff --git a/compiler/z/codegen/OMRCodeGenerator.cpp b/compiler/z/codegen/OMRCodeGenerator.cpp index 901dc31ed1..3aa027b09d 100644 --- a/compiler/z/codegen/OMRCodeGenerator.cpp +++ b/compiler/z/codegen/OMRCodeGenerator.cpp @@ -2258,7 +2258,7 @@ OMR::Z::CodeGenerator::doBinaryEncoding() // overload of the constructor which can accept a NULL preceding instruction. If cursor is NULL the generated // label instruction will be prepended to the start of the instruction stream. _methodBegin = new (self()->trHeapMemory()) TR::S390LabelInstruction(TR::InstOpCode::LABEL, self()->comp()->getStartTree()->getNode(), generateLabelSymbol(self()), static_cast(NULL), self()); - + _methodEnd = generateS390LabelInstruction(self(), TR::InstOpCode::LABEL, self()->comp()->findLastTree()->getNode(), generateLabelSymbol(self())); TR_S390BinaryEncodingData data; @@ -2272,7 +2272,7 @@ OMR::Z::CodeGenerator::doBinaryEncoding() if (self()->comp()->getJittedMethodSymbol()->isJNI() && !self()->comp()->getOption(TR_FullSpeedDebug)) { data.preProcInstruction = TR::Compiler->target.is64Bit() ? - data.cursorInstruction->getNext()->getNext()->getNext() : + data.cursorInstruction->getNext()->getNext()->getNext() : data.cursorInstruction->getNext()->getNext(); } else @@ -5281,15 +5281,6 @@ bool OMR::Z::CodeGenerator::IsInMemoryType(TR::DataType type) #endif } -/** - * Determine if the Left-to-right copy semantics is allowed on NDmemcpyWithPad - * Communicates with the evaluator to do MVC semantics under certain condition no matter how the overlap is - */ -bool OMR::Z::CodeGenerator::inlineNDmemcpyWithPad(TR::Node * node, int64_t * maxLengthPtr) - { - return false; - } - uint32_t getRegMaskFromRange(TR::Instruction * inst); diff --git a/compiler/z/codegen/OMRCodeGenerator.hpp b/compiler/z/codegen/OMRCodeGenerator.hpp index 0c435c66c7..6d0a947bd6 100644 --- a/compiler/z/codegen/OMRCodeGenerator.hpp +++ b/compiler/z/codegen/OMRCodeGenerator.hpp @@ -299,7 +299,6 @@ class OMR_EXTENSIBLE CodeGenerator : public OMR::CodeGenerator bool supportsLengthMinusOneForMemoryOpts() {return true;} - bool inlineNDmemcpyWithPad(TR::Node * node, int64_t * maxLengthPtr = NULL); bool codegenSupportsLoadlessBNDCheck() {return TR::Compiler->target.cpu.getSupportsArch(TR::CPU::zEC12);} TR::Register *evaluateLengthMinusOneForMemoryOps(TR::Node *, bool , bool &lenMinusOne); diff --git a/compiler/z/codegen/OpMemToMem.cpp b/compiler/z/codegen/OpMemToMem.cpp index 4880082dc5..5a649be95f 100644 --- a/compiler/z/codegen/OpMemToMem.cpp +++ b/compiler/z/codegen/OpMemToMem.cpp @@ -198,15 +198,6 @@ MemToMemVarLenMacroOp::generateLoop() bool MemToMemVarLenMacroOp::needsLoop() { - int64_t maxLength = 0; - if (_cg->inlineNDmemcpyWithPad(_rootNode, &maxLength)) - { - if (maxLength == 0 || maxLength > 256) - return true; - else - return false; - } - return true; } @@ -357,7 +348,7 @@ MemToMemConstLenMacroOp::generateLoop() uint64_t dstOffset = 0; - if (inRange && (aliasingPattern || !_cg->storageMayOverlap(_srcNode, len, _dstNode, len)) && !_cg->inlineNDmemcpyWithPad(_rootNode)) + if (inRange && (aliasingPattern || !_cg->storageMayOverlap(_srcNode, len, _dstNode, len))) { TR::InstOpCode::Mnemonic opCode = TR::InstOpCode::MVCL;