Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Dominique Colnet

dblp:c/DominiqueColnet · DBLP profile ↗
← Back
7ranked-venue papers
3as first author
0since 2021 · last 2015
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 6 · 3 first-authorArtificial intelligence and machine learning · 1

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
1 paper
Programming languages and type systems · 54% Compilers and program optimization · 46%

Topics — the 5 heaviest of 5, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization
code generation
0.011997
Efficient Dynamic Dispatch without Virtual Function Tables: The SmallEiffel Compiler · OOPSLA 1997
Compilers and program optimization
dead code elimination
0.011997
Efficient Dynamic Dispatch without Virtual Function Tables: The SmallEiffel Compiler · OOPSLA 1997
Programming languages and type systems › method dispatch
dynamic dispatch
0.011997
Efficient Dynamic Dispatch without Virtual Function Tables: The SmallEiffel Compiler · OOPSLA 1997
Programming languages and type systems › type inference
static type inference
0.011997
Efficient Dynamic Dispatch without Virtual Function Tables: The SmallEiffel Compiler · OOPSLA 1997
Programming languages and type systems › object-oriented programming
multiple inheritance
0.011997
Efficient Dynamic Dispatch without Virtual Function Tables: The SmallEiffel Compiler · OOPSLA 1997

Methods — techniques the papers use, named apart from their topics

type inference · 0.0static binary branch code · 0.0inlining · 0.0
YearPublicationVenuePosition
2015 Exploiting array manipulation habits to optimize garbage collection and type flow analysis
abstract
SUMMARY A widespread practice to implement a flexible array is to consider the storage area into two parts: the used area, which is already available for read/write operations, and the supply area, which is used in case of enlargement of the array. The main purpose of the supply area is to avoid as much as possible the reallocation of the whole storage area in case of enlargement. As the supply area is not used by the application, the main idea of the paper is to convey the information to the garbage collector, making it possible to avoid completely the marking of the supply area. We also present a simple method to analyze the types of objects, which are stored in an array as well as the possible presence ofNULLvalues within the array. This allows us to better specialize the work of the garbage collector when marking the used area, and also, by transitivity, to improve overall results for type analysis of all expressions of the source code. After introducing several abstract data types, which represent the main arrays concerned by our technique (i.e., zero or variable indexing, circular arrays and hash maps), we measure its impact during the bootstrap of two compilers whose libraries are equipped with these abstract data types. We then measure, on various software products we have not written, the frequency of certain habits of manipulation of arrays, to assess the validity of our approach. Copyright © 2014 John Wiley & Sons, Ltd.
Dominique Colnet, Benoît Sonntag
Softw. Pract. Exp.1
2014 Efficient compilation strategy for object-oriented languages under the closed-world assumption
abstract
SUMMARY Reaching the best level of runtime performance from a high‐level, object‐oriented language is often considered challenging if not unattainable. The closed‐world assumption involves considering all of the source code of an application together at compile time. That assumption makes it possible to produce an efficient code. For instance, multiple inheritance can be implemented as efficiently as single inheritance. Our compilation strategy is the result of a prolonged project, tying together several compilation techniques: call graph analysis, dead code elimination, type flow analysis, code customization, implementation of dynamic dispatch, inlining, pointer optimization, switch optimization, objects layout, and so on. Merging all of these techniques into a global strategy appears to be quite problematic. Throughout the paper, two real‐world compilers are used as benchmarks to provide measurements for compiler writers to evaluate the applicability of our approach. Type flow analysis is a fundamental aspect of our strategy to resolve method calls. We have extended type flow analysis to deal with the content of arrays, enabling us to process additional expressions and thus making it possible to obtain a true global analysis. Typically, more than 90% of method call sites are statically resolved. Our experience indicates that the closed‐world assumption is suitable for numerous applications. Surprisingly, even library‐defined control statements from dynamic languages are perfectly processed with our strategy. The Smalltalk ifTrue:ifFalse:, whileTrue:, to:do:, and so on are, for the very first time, perfectly translated. Copyright © 2012 John Wiley & Sons, Ltd.
Benoît Sonntag, Dominique Colnet
Softw. Pract. Exp.2
2006 Reconciling Subtyping and Code Reuse in Object-Oriented Languages: Using inherit and insert in SmartEiffel, the GNU Eiffel Compiler
Dominique Colnet, Guillem Marpons-Ucero, Frederic Merizen
ICSR1
2001 Coping with aliasing in the GNU Eiffel Compiler implementation
abstract
Abstract This paper reports our experience about aliasing in the implementation of SmallEiffel, the GNU Eiffel Compiler. The SmallEiffel compiler source code makes intensive use of aliasing in order to achieve very good performance. We explain how aliasing can be handled in a safer way, and how helpful the design by contract capabilities of the Eiffel language have been. The Singleton pattern appears to be crucial in implementing alias provider objects. We propose an efficient implementation of this pattern made easy by some Eiffel idioms. This technique, which requires no language modification, is very appropriate for compilation, but can also be applied to a much wider range of applications. We show the performance impact of string aliasing both in terms of memory footprint and execution time. Copyright © 2001 John Wiley & Sons, Ltd.
Olivier Zendra, Dominique Colnet
Softw. Pract. Exp.2
1998 Compiler Support to Customize the Mark and Sweep Algorithm
abstract
Mark and sweep garbage collectors (GC) are classical but still very efficient automatic memory management systems. Although challenged by other kinds of systems, such as copying collectors, mark and sweep collectors remain among the best in terms of performance.This paper describes our implementation of an efficient mark and sweep garbage collector tailored to each program. Compiler support provides the type information required to statically and automatically generate this customized garbage collector. The segregation of objects by type allows the production of a more efficient GC code. This technique, implemented in Small Eiffel, our compiler for the object-oriented language Eiffel, is applicable to other languages and other garbage collection algorithms, be they distributed or not.We present the results obtained on programs featuring a variety of programming styles and compare our results to a well-know and high quality garbage collector.
Dominique Colnet, Philippe Coucaud, Olivier Zendra
ISMM1
1997 Efficient Dynamic Dispatch without Virtual Function Tables: The SmallEiffel Compiler
abstract
SmallEiffel is an Eiffel compiler which uses a fast simple type inference mechanism to remove most late binding calls, replacing them by static bindings. Starting from the system's entry point, it compiles only statically living code, which saves compiling and then removing dead code. As the whole system is analyzed at compile time, multiple inheritance and genericity do not cause any overhead.SmallEiffel features a coding scheme which eliminates the need for virtual function tables. Dynamic dispatch is implemented without any array access but uses a simple static binary branch code. We show that this implementation makes it possible to use modern hardware very efficiently. It also allows us to inline more calls even when dynamic dispatch is required. Some more dispatch sites are removed after the type inference algorithm has been performed, if the different branches of a dispatch site lead to the same code.The advantage of this approach is that it greatly speeds up execution time and considerably decreases the amount of generated code.
Olivier Zendra, Dominique Colnet, Suzanne Collin
OOPSLA2
1994 Syntactic Analysis of Technical Drawing Dimensions
abstract
We present a syntactic approach to technical drawing dimensions analysis. A specific grammar is used to describe dimensions of drawings. This grammar can be graphically designed by combining different graphic primitives. The algorithm used for analysis can start at different points of the grammar. The analysis proceeds bottom-up and top-down according to previously obtained results.
Suzanne Collin, Dominique Colnet
Int. J. Pattern Recognit. Artif. Intell.2