class_docstr: A register-only variable.
  
  Efficiently stores and updates values whose lifetime does not cross function
  calls (and therefore does not require a stack).  This is different from
  `TemporaryVariable` because it supports crossing basic block boundaries.  A
  `RegisterNumpyVariable` therefore needs to store its content persistently
  across the `while_loop` in `execute`, and to handle divergence (and
  re-convergence) of logical threads.
class_docstr_tok: ["A","register-only","variable",".","Efficiently","stores","and","updates","values","whose","lifetime","does","not","cross","function","calls","(","and","therefore","does","not","require","a","stack",")",".","This","is","different","from","`","TemporaryVariable","`","because","it","supports","crossing","basic","block","boundaries",".","A","`","RegisterNumpyVariable","`","therefore","needs","to","store","its","content","persistently","across","the","`","while_loop","`","in","`","execute","`",",","and","to","handle","divergence","(","and","re-convergence",")","of","logical","threads","."]
code: def update(self, value, mask):
      new_value = np.where(mask, value, self.value)
      return type(self)(new_value)
  
imports: import collections
  import numpy
  from tensorflow_probability.python.experimental.auto_batching import instructions
label_desc: Use image node_id 1 for calling the RegisterNumpyVariable obj's underlying member method code with example usage: obj.update(value, mask) and returns: type