Too bad Unix didn't provide an efficient way to save/restore chdir context (based on i-node instead of on a path string).
Many unixes now provide an fchdir call which does what you want; instead of a pathname, it accepts an open file descriptor and then sets the cwd to the directory pointed to by the descriptor. To save the old cwd, you simply open the current directory. After you've done chdir, you can fchdir to the descriptor returned by the open when you want to go back.
You can't have a system call that simply accepts an i-number, because such a call would bypass the filesystem's permission controls.