Demo Data from EDBT 2026 / reviewers in the wild / expert
Henrique Nazaré
dblp:127/9558 · also Henrique Nazaré Santos
· DBLP profile ↗
6ranked-venue papers
1as first author
0since 2021 · last 2016
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 5 · 1 first-authorSystems, architecture and hardware · 2
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
2 papers |
Programming languages and type systems · 67% Program analysis · 25% Compilers and program optimization · 8% | |
| Network and information security
1 paper |
Systems and software security · 100% |
Topics — the 5 heaviest of 5, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › interoperability
language interoperability |
0.2 | 1 | 2016 | Array length inference for C library bindings · ASE 2016 |
Programming languages and type systems
type inference |
0.2 | 1 | 2016 | Array length inference for C library bindings · ASE 2016 |
Systems and software security
memory safety |
0.2 | 1 | 2014 | Validation of memory accesses through symbolic analyses · OOPSLA 2014 |
Program analysis
static analysis |
0.2 | 1 | 2014 | Validation of memory accesses through symbolic analyses · OOPSLA 2014 |
Compilers and program optimization › compiler optimization › redundancy elimination
run-time check elimination |
0.1 | 1 | 2014 | Validation of memory accesses through symbolic analyses · OOPSLA 2014 |
Methods — techniques the papers use, named apart from their topics
symbolic region analysis · 0.4range analysis · 0.4live range splitting · 0.4static analysis · 0.2annotation inference · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2016 | Restrictification of function argumentsabstractPointer aliasing still hinders compiler optimizations, in spite of years of research on pointer disambiguation. Because the automatic disambiguation of pointers is a difficult endeavor, several programming languages offer programmers mechanisms to distinguish memory references, such as the “restrict” keyword in C. However, the use of such mechanisms is prone to human mistakes. In this paper we present a suite of automatic techniques that mitigate this problem. We have designed, implemented and tested three different ways to disambiguate pointers passed as arguments of functions. Our techniques combine static analyses to infer symbolic bounds of memory regions and code versioning. We generate a clone for each function whose arguments we can disambiguate and optimize it assuming the absence of aliasing among formal parameters. At runtime, we use the results of the symbolic interval tests to decide which version of a function we should call: the original one or the “restricted” clone, whenever we can prove that no aliasing can occur at runtime. An implementation of our restrictification methods in LLVM shows that we can vectorize up to 63% more operations than what could be accomplished using the -O3 optimization level of said compiler. When applying the optimization on OpenCV benchmarks, we have observed speedups as great as 40%. Victor Hugo Sperle Campos, Péricles Rafael Oliveira Alves, Henrique Nazaré, Fernando Magno Quintão Pereira |
CC | 3 |
| 2016 | Array length inference for C library bindingsabstractSimultaneous use of multiple programming languages (polyglot programming) assists in creating efficient, coherent, modern programs in the face of legacy code. However, manually creating bindings to low-level languages like C is tedious and error-prone. We offer relief in the form of an automated suite of analyses, designed to enhance the quality of automatically produced bindings. These analyses recover high-level array length information that is missing from C’s type system. We emit annotations in the style of GObject-Introspection, which produces bindings from annotations on function signatures. We annotate each array argument as terminated by a special sentinel value, fixed-length, or of length determined by another argument. These properties help produce more idiomatic, efficient bindings. We correctly annotate at least 70% of all arrays with these length types, and our results are comparable to those produced by human annotators, but take far less time to produce. Alisa J. Maas, Henrique Nazaré, Ben Liblit |
ASE | 2 |
| 2014 | Compiler support for selective page migration in NUMA architecturesabstractCurrent high-performance multicore processors provide users with a non-uniform memory access model (NUMA). These systems perform better when threads access data on memory banks next to the core where they run. However, ensuring data locality is difficult. In this paper, we propose compiler analyses and code generation methods to support a lightweight runtime system that dynamically migrates memory pages to improve data locality. Our technique combines static and dynamic analyses and is capable of identifying the most promising pages to migrate. Statically, we infer the size of arrays, plus the amount of reuse of each memory access instruction in a program. These estimates rely on a simple, yet accurate, trip count predictor of our own design. This knowledge lets us build templates of dynamic checks, to be filled with values known only at runtime. These checks determine when it is profitable to migrate data closer to the processors where this data is used. Our static analyses are quadratic on the number of variables in a program, and the dynamic checks are O(1) in practice. Our technique does not require any form of user intervention, neither the support of a third-party middleware, nor modifications in the operating system's kernel. We have applied our technique on several parallel algorithms, which are completely oblivious to the asymmetric memory topology, and have observed speedups of up to 4x, compared to static heuristics. We compare our approach against Minas, a middleware that supports NUMA-aware data allocation, and show that we can outperform it by up to 50% in some cases. Guilherme Piccoli, Henrique Nazaré, Raphael Ernani Rodrigues, Christiane Pousa, Edson Borin, Fernando Magno Quintão Pereira |
PACT | 2 |
| 2014 | Validation of memory accesses through symbolic analysesabstractThe C programming language does not prevent out-of-bounds memory accesses. There exist several techniques to secure C programs; however, these methods tend to slow down these programs substantially, because they populate the binary code with runtime checks. To deal with this problem, we have designed and tested two static analyses - symbolic region and range analysis - which we combine to remove the majority of these guards. In addition to the analyses themselves, we bring two other contributions. First, we describe live range splitting strategies that improve the efficiency and the precision of our analyses. Secondly, we show how to deal with integer overflows, a phenomenon that can compromise the correctness of static algorithms that validate memory accesses. We validate our claims by incorporating our findings into AddressSanitizer. We generate SPEC CINT 2006 code that is 17% faster and 9% more energy efficient than the code produced originally by this tool. Furthermore, our approach is 50% more effective than Pentagons, a state-of-the-art analysis to sanitize memory accesses. Henrique Nazaré, Izabela Maffra, Willer Santos, Leonardo B. Oliveira, Laure Gonnord, Fernando Magno Quintão Pereira |
OOPSLA | 1 |
| 2014 | Just-in-time value specialization
Igor Rafael de Assis Costa, Henrique Nazaré, Péricles Rafael Oliveira Alves, Fernando Magno Quintão Pereira |
Comput. Lang. Syst. Struct. | 2 |
| 2013 | Just-in-time value specializationabstractJavaScript emerges today as one of the most important programming languages for the development of client-side web applications. Therefore, it is essential that browsers be able to execute JavaScript programs efficiently. However, the dynamic nature of this programming language makes it very challenging to achieve this much needed efficiency. In this paper we propose parameter-based value specialization as a way to improve the quality of the code produced by JIT engines. We have empirically observed that almost 60% of the JavaScript functions found in the world's 100 most popular websites are called only once, or are called with the same parameters. Capitalizing on this observation, we adapt a number of classic compiler optimizations to specialize code based on the runtime values of function's actual parameters. We have implemented the techniques proposed in this paper in IonMonkey, an industrial quality JavaScript JIT compiler developed in the Mozilla Foundation. Our experiments, run across three popular JavaScript benchmarks, SunSpider, V8 and Kraken, show that, in spite of its highly speculative nature, our optimization pays for itself. As an example, we have been able to speedup SunSpider by 5.38%, and to reduce the size of its native code by 16.72%. Igor Rafael de Assis Costa, Péricles Rafael Oliveira Alves, Henrique Nazaré, Fernando Magno Quintão Pereira |
CGO | 3 |