Klasse SynchronizedStatement

Alle implementierten Schnittstellen:
TypeConstants, TypeIds

public class SynchronizedStatement extends SubRoutineStatement
  • Felddetails

  • Konstruktordetails

    • SynchronizedStatement

      public SynchronizedStatement(Expression expression, Block statement, int s, int e)
  • Methodendetails

    • analyseCode

      public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo)
      Angegeben von:
      analyseCode in Klasse Statement
    • isSubRoutineEscaping

      public boolean isSubRoutineEscaping()
      Angegeben von:
      isSubRoutineEscaping in Klasse SubRoutineStatement
    • generateCode

      public void generateCode(BlockScope currentScope, CodeStream codeStream)
      Synchronized statement code generation
      Angegeben von:
      generateCode in Klasse Statement
      Parameter:
      currentScope - org.eclipse.jdt.internal.compiler.lookup.BlockScope
      codeStream - org.eclipse.jdt.internal.compiler.codegen.CodeStream
    • generateSubRoutineInvocation

      public boolean generateSubRoutineInvocation(BlockScope currentScope, CodeStream codeStream, Object targetLocation, int stateIndex, LocalVariableBinding secretLocal)
      Beschreibung aus Klasse kopiert: SubRoutineStatement
      Generate an invocation of a subroutine (e.g. jsr finally) in current context.
      Angegeben von:
      generateSubRoutineInvocation in Klasse SubRoutineStatement
      Parameter:
      currentScope -
      codeStream -
      targetLocation -
      stateIndex -
      secretLocal -
      Gibt zurück:
      boolean, true if the generated code will abrupt completion
      Siehe auch:
    • resolve

      public void resolve(BlockScope upperScope)
      Angegeben von:
      resolve in Klasse Statement
    • printStatement

      public StringBuffer printStatement(int indent, StringBuffer output)
      Angegeben von:
      printStatement in Klasse Statement
    • traverse

      public void traverse(ASTVisitor visitor, BlockScope blockScope)
      Setzt außer Kraft:
      traverse in Klasse ASTNode
    • doesNotCompleteNormally

      public boolean doesNotCompleteNormally()
      Beschreibung aus Klasse kopiert: Statement
      Lambda shape analysis: *Assuming* this is reachable, analyze if this completes normally i.e control flow can reach the textually next statement. For blocks, we don't perform intra-reachability analysis. We assume the lambda body is free of intrinsic control flow errors (if such errors exist they will not be flagged by this analysis, but are guaranteed to surface later on.)
      Setzt außer Kraft:
      doesNotCompleteNormally in Klasse Statement
      Siehe auch:
    • completesByContinue

      public boolean completesByContinue()
      Beschreibung aus Klasse kopiert: Statement
      Lambda shape analysis: *Assuming* this is reachable, analyze if this completes by continuing i.e control flow cannot reach the textually next statement. This is necessitated by the fact that continue claims to not complete normally. So this is necessary to discriminate between do { continue; } while (false); which completes normally and do { throw new Exception(); } while (false); which does not complete normally.
      Setzt außer Kraft:
      completesByContinue in Klasse Statement
    • canCompleteNormally

      public boolean canCompleteNormally()
      Beschreibung aus Klasse kopiert: Statement
      Switch Expression analysis: *Assuming* this is reachable, analyze if this completes normally i.e control flow can reach the textually next statement, as per JLS 14 Sec 14.22 For blocks, we don't perform intra-reachability analysis. Note: delinking this from a similar (opposite) Statement.doesNotCompleteNormally() since that was coded for a specific purpose of Lambda Shape Analysis.
      Setzt außer Kraft:
      canCompleteNormally in Klasse Statement
    • continueCompletes

      public boolean continueCompletes()
      Beschreibung aus Klasse kopiert: Statement
      The equivalent function of completesByContinue - implements both the rules concerning continue with and without a label.
      Setzt außer Kraft:
      continueCompletes in Klasse Statement