We propose a more vertically-integrated software and system stack to combat the growing mismatch between software and its higher abstraction levels, and low-level hardware that has been growing more complex as it has hit power limitations. While programming languages have gone to higher abstraction levels to make programming easier and to make software portable, the cost is a loss in performance. This loss is exacerbated as machines have moved to multicore, and now to heterogeneous designs. The solution is to communicate software's organization and needs through the layers of the stack to help hardware deal with its limited resources, namely processors, caches, bandwidth, and power. We propose that we can use the VUB Software Language Lab's programming language and software development expertise together with the Ghent Performance Lab's expertise in the managed language runtime and performance and memory optimization fields, to develop new language interfaces and new virtual machine implementations. These will guide hardware on how to schedule parallel tasks, how to manage data movement on chip, and how to minimize power. Hardware can no longer achieve these goals with its limited low-level instruction information - we must use the dynamic, monitoring capabilities of high-level managed languages. Together, we can build a collaborative, vertically-integrated system that optimizes application scalability and performance on modern machines.