One of the major drawbacks to using garbled circuits for two-party secure computation (where two parties can jointly compute an agreed-upon function of their inputs while keeping said inputs secret) is that they can only be used once and need to be regenerated, essentially from scratch, for subsequent computations.
While we know that “refreshing” a garbled circuit for reuse is theoretically possible (using homomorphic encryption as a primitive), no reasonably efficient system has ever been described: this is one of the primary problems in the area. We have already devised methods to save encrypted state across such computations in previous work, but that is a far cry from actually being able to reuse a circuit.