If the abstraction is that the routine expects you to have three specific data elements, and it is only a coincidence that those three elements happen to be provided by the same object, then you should pass the three specific data elements individually. However, if the abstraction is that you will always have that particular object in hand and the routine will do something or other with that object, then you truly do break the abstraction when you expose the three specific data elements.
This seems to be a counter example:
Most changes are removed by passing objects because you are much more likely to need to make only a couple of requests to get at a new piece of data.