One embodiment of the present invention provides a system for verifying type
safety of an application snapshot. This application snapshot includes a state of
an executing program that is moved from a first computing device to a second computing
device across a network in order to continue execution on the second computing
device. The system operates by receiving the application snapshot from the first
computing device on the second computing device, wherein the application snapshot
includes a subprogram, an operand stack, and a point of execution. The system then
examines the application snapshot to identify one or more subprograms and the point
of execution within the subprograms. Next, the system examines the subprogram to
determine an expected structure of the operand stack at the point of execution.
After the expected structure of the operand stack has been determined, the system
verifies that the state of the application snapshot on the second computing device
does not violate type safety in the sense of a platform-independent programming
language. Execution of the application snapshot is resumed on the second computing
device if the verification does not fail.