Learn More
We describe the design and implementation of a system for very fast points-to analysis. On code bases of about million lines of unpreprocessed C code, our system performs field-based Andersen-style points-to analysis in less than a second and uses less than 10MB of memory. Our two main contributions are a database-centric analysis architecture called(More)
Typical embedded hardware/software systems are implemented using a combination of C and an <sc>hdl</sc> such as Verilog. While each is well-behaved in isolation, combining the two gives a nondeterministic model whose ultimate behavior must be validated through expensive (cycle-accurate) simulation.We propose an alternative for describing such systems. Our(More)
Work-stealing is a promising approach for effectively exploiting software parallelism on parallel hardware. A programmer who uses work-stealing explicitly identifies potential parallelism and the runtime then schedules work, keeping otherwise idle hardware busy while relieving overloaded hardware of its burden. Prior work has demonstrated that work-stealing(More)
Known algorithms for pointer analysis are &#8220;global&#8221; in the sense that they perform an exhaustive analysis of a program or program component. In this paper we introduce a demand-driven approach for pointer analysis. Specifically, we describe a <i>demand-driven</i> flow-insensitive, subset-based, con text-insensitive points-to analysis. Given a(More)
1. A diversity of parallel architectures The multicore discontinuity is forcing application programmers to deal with a variety of concurrent architectures, such as clusters of SMPs/multicores, hetereogeneous accelerators such as the Cell and GPUs, and integrated high core-count architectures such as Blue Gene. The central question in front of us is the(More)
Multicore shared-memory architectures are becoming prevalent and bring many programming challenges. Among the biggest are data races: accesses to shared resources that make a program's behavior depend on scheduling decisions beyond its control. To eliminate such races, the <i>SHIM</i> concurrent programming language adopts deterministic message passing as(More)