Ejemplo n.º 1
0
uint32_t
TR::S390CallSnippet::getLength(int32_t  estimatedSnippetStart)
   {
   // *this   swipeable for debugger
   // length = instructionCountForArgsInBytes + (BASR + L(or LG) + BASR +3*sizeof(uintptrj_t)) + NOPs
   // number of pad bytes has not been set when this method is called to
   // estimate codebuffer size, so -- i'll put an conservative number here...
   return (instructionCountForArguments(getNode(), cg()) +
      getPICBinaryLength(cg()) +
      3 * sizeof(uintptrj_t) +
      getRuntimeInstrumentationOnOffInstructionLength(cg()) +
      sizeof(uintptrj_t));  // the last item is for padding
   }
Ejemplo n.º 2
0
uint32_t
TR::S390HelperCallSnippet::getLength(int32_t)
   {
   uint32_t length;
   TR::SymbolReference * helperSymRef = getHelperSymRef();

   // LARL + BRASL/BRCL
   length = 12;

   if (helperSymRef == cg()->symRefTab()->element(TR_induceOSRAtCurrentPC))
      {
      length += TR::S390CallSnippet::instructionCountForArguments(getNode(), cg());
      }

   length += getLoadVMThreadInstructionLength(cg());

   length += getRuntimeInstrumentationOnOffInstructionLength(cg());

   return length;
   }