• Documents
  • Authors
  • Tables
  • Log in
  • Sign up
  • MetaCart
  • DMCA
  • Donate

CiteSeerX logo

Advanced Search Include Citations
Advanced Search Include Citations

C: A language for high-level, efficient, and machineindependent code generation. (1996)

by D R Engler, W Hsieh, M Kaashoek
Venue:In POPL,
Add To MetaCart

Tools

Sorted by:
Results 1 - 10 of 119
Next 10 →

A Survey of active network Research

by David L. Tennenhouse, Jonathan M. Smith - IEEE Communications , 1997
"... Active networks are a novel approach to network architecture in which the switches of the network perform customized computations on the messages flowing through them. This approach is motivated by both lead user applications, which perform user-driven computation at nodes within the network today, ..."
Abstract - Cited by 549 (29 self) - Add to MetaCart
Active networks are a novel approach to network architecture in which the switches of the network perform customized computations on the messages flowing through them. This approach is motivated by both lead user applications, which perform user-driven computation at nodes within the network today, and the emergence of mobile code technologies that make dynamic network service innovation attainable. In this paper, we discuss two approaches to the realization of active networks and provide a snapshot of the current research issues and activities. Introduction – What Are Active Networks? In an active network, the routers or switches of the network perform customized computations on the messages flowing through them. For example, a user of an active network could send a “trace ” program to each router and arrange for the program to be executed when their packets are processed. Figure 1 illustrates how the routers of an IP
(Show Context)

Citation Context

...sule architecture is being implemented on Linux using a Java-based capsule encoding. Additional enabling technologies, including advanced operating system techniques [14] and "on-the-fly" co=-=mpilation [16] are -=-also under investigation. Capsules use the built-in constructs of a programming language to perform packet processing. This language will be extended through the specification of a suite of "foun...

Towards an Active Network Architecture

by David L. Tennenhouse, David J. Wetherall - Computer Communication Review , 1996
"... Active networks allow their users to inject customized programs into the nodes of the network. An extreme case, in which we are most interested, replaces packets with "capsules" -- program fragments that are executed at each network router/switch they traverse. Active architectures permit ..."
Abstract - Cited by 497 (7 self) - Add to MetaCart
Active networks allow their users to inject customized programs into the nodes of the network. An extreme case, in which we are most interested, replaces packets with "capsules" -- program fragments that are executed at each network router/switch they traverse. Active architectures permit a massive increase in the sophistication of the computation that is performed within the network. They will enable new applications, especially those based on application-specific multicast, information fusion, and other services that leverage network-based computation and storage. Furthermore, they will accelerate the pace of innovation by decoupling network services from the underlying hardware and allowing new services to be loaded into the infrastructure on demand. In this paper, we describe our vision of an active network architecture, outline our approach to its design, and survey the technologies that can be brought to bear on its implementation. We propose that the research community mount a j...
(Show Context)

Citation Context

...allow the compiler to generate code that is more efficient. In both cases, we would expect the directly executable binary code to out-perform an interpreted format. On-the-fly Compilation Recent work =-=[21] has enabl-=-ed "on-the-fly" compilation with a dialect of the C programming language. This allows source programs to be automatically tailored, or even wholly generated, at run-time. In conjunction with...

An API for Runtime Code Patching

by Bryan Buck, Jeffrey K. Hollingsworth - The International Journal of High Performance Computing Applications , 2000
"... We present a post-compiler program manipulation tool called Dyninst which provides a C++ class library for program instrumentation. Using this library, it is possible to instrument and modify application programs during execution. A unique feature of this library is that it permits machine-independe ..."
Abstract - Cited by 290 (12 self) - Add to MetaCart
We present a post-compiler program manipulation tool called Dyninst which provides a C++ class library for program instrumentation. Using this library, it is possible to instrument and modify application programs during execution. A unique feature of this library is that it permits machine-independent binary instrumentation programs to be written. We describe the interface that a tool sees when using this library. We also discuss three simple tools built using this interface: a utility to count the number of times a function is called, a program to capture the output of an already running program to a file, and an implementation of conditional break points. For the conditional breakpoint example, we show that by using our interface compared with gdb we are able to execute a program with conditional breakpoints up to 900 times faster. 1. Introduction The normal cycle of developing a program is to edit source code, compile it, and then execute the resulting binary. However, sometimes t...

A Modal Analysis of Staged Computation

by Rowan Davies, Frank Pfenning - JOURNAL OF THE ACM , 1996
"... We show that a type system based on the intuitionistic modal logic S4 provides an expressive framework for specifying and analyzing computation stages in the context of functional languages. Our main technical result is a conservative embedding of Nielson & Nielson's two-level functional la ..."
Abstract - Cited by 212 (21 self) - Add to MetaCart
We show that a type system based on the intuitionistic modal logic S4 provides an expressive framework for specifying and analyzing computation stages in the context of functional languages. Our main technical result is a conservative embedding of Nielson & Nielson's two-level functional language in our language Mini-ML, which in

Optimizing ML with Run-Time Code Generation

by Peter Lee, Mark Leone - In Proceedings of the ACM SIGPLAN '96 Conference on Programming Language Design and Implementation
"... We describe the design and implementation of a compiler that automatically translates ordinary programs written in a subset of ML into code that generates native code at run time. Run-time code generation can make use of values and invariants that cannot be exploited at compile time, yielding code t ..."
Abstract - Cited by 174 (10 self) - Add to MetaCart
We describe the design and implementation of a compiler that automatically translates ordinary programs written in a subset of ML into code that generates native code at run time. Run-time code generation can make use of values and invariants that cannot be exploited at compile time, yielding code that is often superior to statically optimal code. But the cost of optimizing and generating code at run time can be prohibitive. We demonstrate how compile-time specialization can reduce the cost of run-time code generation by an order of magnitude without greatly affecting code quality. Several benchmark programs are examined, which exhibit an average cost of only six cycles per instruction generated at run time. 1 Introduction In this paper, we describe our experience with a prototype system for run-time code generation. Our system, called Fabius, is a compiler that takes ordinary programs written in a subset of ML and automatically compiles them into native code that generates native c...

DPF: Fast, Flexible Message Demultiplexing using Dynamic Code Generation

by Dawson Engler, M. Frans Kaashoek - In ACM Communication Architectures, Protocols, and Applications (SIGCOMM , 1996
"... Fast and flexible message demultiplexing are well-established goals in the networking community [1, 18, 22]. Currently, however, network architects have had to sacrifice one for the other. We present a new packet-filter system, DPF (Dynamic Packet Filters), that provides both the traditional flexibi ..."
Abstract - Cited by 142 (12 self) - Add to MetaCart
Fast and flexible message demultiplexing are well-established goals in the networking community [1, 18, 22]. Currently, however, network architects have had to sacrifice one for the other. We present a new packet-filter system, DPF (Dynamic Packet Filters), that provides both the traditional flexibility of packet filters [18] and the speed of hand-crafted demultiplexing routines [3]. DPF filters run 10--50 times faster than the fastest packet filters reported in the literature [1, 17, 18, 27]. DPF's performance is either equivalent to or, when it can exploit runtime information, superior to handcoded demultiplexors. DPF achieves high performance by using a carefully-designed declarative packet-filter language that is aggressively optimized using dynamic code generation. The contributions of this work are: (1) a detailed description of the DPF design, (2) discussion of the use of dynamic code generation and quantitative results on its performance impact, (3) quantitative results on how ...
(Show Context)

Citation Context

...freely available. For instance, DPF uses the public-domain VCODE dynamic code generation system [8]. Language support for dynamic code generation has even been added to high-level languages such as C =-=[4, 9]-=- making the generation code code at runtime no more complex than the implementation of statically generated code. However, even if an implementor eschews the use of a portable system, writing the mach...

VCODE: A Retargetable, Extensible, Very Fast Dynamic Code Generation System

by Dawson R. Engler
"... Dynamic code generation is the creation of executable code at runtime. Such “on-the-fly ” code generation is a powerful technique, enabling applications to use runtime information to improve performance by up to an order of magnitude [4, 8, 20, 22, 23]. Unfortunately, previous general-purpose dynami ..."
Abstract - Cited by 133 (8 self) - Add to MetaCart
Dynamic code generation is the creation of executable code at runtime. Such “on-the-fly ” code generation is a powerful technique, enabling applications to use runtime information to improve performance by up to an order of magnitude [4, 8, 20, 22, 23]. Unfortunately, previous general-purpose dynamic code generation systems have been either inefficient or non-portable. We present VCODE, a retargetable, extensible, very fast dynamic code generation system. An important feature of VCODE is that it generates machine code “in-place” without the use of intermediate data structures. Eliminating the need to construct and consume an intermediate representation at runtime makes VCODE both efficient and extensible. VCODE dynamically generates code at an approximate cost of six to ten instructions per generated instruction, making it over an order of magnitude faster than the most efficient general-purpose code generation system in the literature [10]. Dynamic code generation is relatively well known within the compiler community. However, due in large part to the lack of a publicly available dynamic code generation system, it has remained a curiosity rather than a widely used technique. A practical contribution of this work is the free, unrestricted distribution of the VCODE system, which currently runs on the MIPS, SPARC, and Alpha architectures.
(Show Context)

Citation Context

...23]. Runtime partial evaluation also uses dynamic code generation in order to propagate runtime constants to feed optimizations such as strength reduction, dead-code elimination, and constant folding =-=[7, 20]-=-. Unfortunately, portability and functionality barriers limit the use of dynamic code generation. Because binary instructions are generated, programs using dynamic code generation must be retargeted f...

Value Profiling

by Brad Calder, Peter Feller, Alan Eustace - In MICRO-97 , 1997
"... Identifying variables as invariant or constant at compile-time allows the compiler to perform optimizations including constant folding, code specialization, and partial evaluation. Some variables, which cannot be labeled as constants, may exhibit semi-invariant behavior. A semiinvariant variable is ..."
Abstract - Cited by 117 (5 self) - Add to MetaCart
Identifying variables as invariant or constant at compile-time allows the compiler to perform optimizations including constant folding, code specialization, and partial evaluation. Some variables, which cannot be labeled as constants, may exhibit semi-invariant behavior. A semiinvariant variable is one that cannot be identified as a constant at compile-time, but has a high degree of invariant behavior at run-time. If run-time information was available to identify these variables as semi-invariant, they could then benefit from invariant-based compiler optimizations. In this paper we examine the invariance found from profiling instruction values, and show that many instructions have semi-invariant values even across different inputs. We also investigate the ability to estimate the invariance for all instructions in a program from only profiling load instructions. In addition, we propose a new type of profiling called Convergent Profiling. Estimating the invariance from loads and converg...
(Show Context)

Citation Context

...of code to concentrate on for the adaptive execution. Existing techniques for dynamic compilation and adaptive execution require the user to identify run-time invariants using user guided annotations =-=[1, 3, 4, 7, 8]-=-. One of the goals of value profiling is to provide an automated approach for identifying semi-invariant variables and to use this to guide dynamic compilation and adaptive execution. Staging analysis...

DyC: An Expressive Annotation-Directed Dynamic Compiler for C

by Brian Grant , Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers
"... We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic compilation should take place, a binding-time analysis computes the set of run-time constants at each ..."
Abstract - Cited by 110 (4 self) - Add to MetaCart
We present the design of DyC, a dynamic-compilation system for C based on run-time specialization. Directed by a few declarative user annotations that specify the variables and code on which dynamic compilation should take place, a binding-time analysis computes the set of run-time constants at each program point in the annotated procedure's control-flow graph; the analysis supports program-point-specific polyvariant division and specialization. The results of the analysis guide the construction of a run-time specializer for each dynamically compiled region; the specializer supports various caching strategies for managing dynamically generated code and mixes of speculative and demand-driven specialization of dynamic branch successors. Most of the key cost/benefit trade-offs in the binding-time analysis and the run-time specializer are open to user control through declarative policy annotations. DyC has

A brief history of just-in-time

by John Aycock - ACM Computing Surveys
"... Software systems have been using “just-in-time ” compilation (JIT) techniques since the 1960s. Broadly, JIT compilation includes any translation performed dynamically, after a program has started execution. We examine the motivation behind JIT compilation and constraints imposed on JIT compilation s ..."
Abstract - Cited by 79 (2 self) - Add to MetaCart
Software systems have been using “just-in-time ” compilation (JIT) techniques since the 1960s. Broadly, JIT compilation includes any translation performed dynamically, after a program has started execution. We examine the motivation behind JIT compilation and constraints imposed on JIT compilation systems, and present a classification scheme for such systems. This classification emerges as we survey forty years of JIT work, from
Powered by: Apache Solr
  • About CiteSeerX
  • Submit and Index Documents
  • Privacy Policy
  • Help
  • Data
  • Source
  • Contact Us

Developed at and hosted by The College of Information Sciences and Technology

© 2007-2019 The Pennsylvania State University