code: def execute(cls, ctx, op):
      fill_value = op.fill_value
      out = op.outputs[0]
      (inp,), device_id, xp = as_same_device(
          [ctx[inp.key] for inp in op.inputs],
          device=op.device,
          ret_extra=True,
      )
  
      with device(device_id):
          if fill_value is None:
              ctx[out.key] = inp.toarray().astype(
                  out.dtype, order=op.order, copy=False
              )
          else:
              xp = get_array_module(xp)
              spmatrix = inp.spmatrix
              inds = spmatrix.nonzero()
              ret = xp.full(
                  inp.shape, fill_value, dtype=out.dtype, order=op.order
              )
              ret[inds] = spmatrix.data
              ctx[out.key] = ret
  
file_path: mars/mars/tensor/datasource/from_sparse.py
imports: from ...None import opcodes
  from ...serialization.serializables import KeyField, StringField, AnyField
  from ..array_utils import as_same_device, device, get_array_module
  from ..utils import get_order
  from .core import TensorHasInput
  from .array import tensor
label_desc: Use image node_id 4 for calling the SparseToDense obj's underlying member method code with example usage: obj.execute(cls, ctx, op) without return types