code: protected final void setRequiresCheckpoint()
      {
          final String methodName = "setRequiresCheckpoint";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this,
                          cclass,
                          methodName,
                          new Object[] { new Boolean(requiresPersistentCheckpoint) });
  
          // The states for which a checkpoint log Record must be written to the log unless this transactions ends first.
          // Has any logging been done? If The transaction enters one of thse states after this
          // call then all of its state will be in the log after CheckpointStart.
          final boolean checkpointRequired[] = { false
                                                , false
                                                , false
                                                , true // ActivePersistent.
                                                , false
                                                , false
                                                , true // PrePreparedPersistent.
                                                , false
                                                , false
                                                , true // PreparedPersistent.
                                                , false
                                                , false
                                                , true // CommitingPersistent. Not needed because of synchronize in commit.
                                                , false
                                                , false
                                                , true // BackingOutPersistent.  Not needed because of synchronize in commit.
                                                , false
          };
  
          requiresPersistentCheckpoint = checkpointRequired[state];
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this,
                         cclass,
                         methodName,
                         new Object[] { new Boolean(requiresPersistentCheckpoint) });
      }
docs: Mark this InternalTransaction as requiring a Checkpoint in the current checkpoint cycle.