Runtime support for object-based message-driven parallel applications on heterogeneous clusters