How about stringify'ing the value here instead of in the compute function: 
`val = stringify(scope.$eval(expressions[i]));`

This means `lastValues` won't hold any reference to objects that we have nothing to do with.