Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Encapsulators: a new software paradigm in Smalltalk-80
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
The design and implementation of distributed Smalltalk
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Transparent forwarding: First steps
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Experience and evolution of concurrent Smalltalk
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Building a backtracking facility in smalltalk without kernel support
OOPSLA '88 Conference proceedings on Object-oriented programming systems, languages and applications
Computational reflection in class based object-oriented languages
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Reflective facilities in Smalltalk-80
OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications
Back to the future: the story of Squeak, a practical Smalltalk written in itself
Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Dynamic class loading in the Java virtual machine
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
On the criteria to be used in decomposing systems into modules
Communications of the ACM
The Java syntactic extender (JSE)
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Altering Java Semantics via Bytecode Manipulation
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Meta-level Programming with CodA
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
ECCOP '98 Proceedings of the 12th European Conference on Object-Oriented Programming
Distributed Programming in GARF
ECOOP '93 Proceedings of the Workshop on Object-Based Distributed Programming
AspectS - Aspect-Oriented Programming with Squeak
NODe '02 Revised Papers from the International Conference NetObjectDays on Objects, Components, Architectures, Services, and Applications for a Networked World
Meta-Level Architecture Support for distributed Objects
IWOOOS '95 Proceedings of the 4th International Workshop on Object-Orientation in Operating Systems
Partial behavioral reflection: spatial and temporal selection of reification
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
An easy-to-use toolkit for efficient Java bytecode translators
Proceedings of the 2nd international conference on Generative programming and component engineering
Designing the whyline: a debugging interface for asking questions about program behavior
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
A versatile kernel for multi-language AOP
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
User-changeable visibility: resolving unanticipated name clashes in traits
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Mirages: behavioral intercession in a mirror-based architecture
Proceedings of the 2007 symposium on Dynamic languages
Unanticipated partial behavioral reflection: Adapting applications at runtime
Computer Languages, Systems and Structures
Taking an object-centric view on dynamic information with object flow analysis
Computer Languages, Systems and Structures
Zero-a blend of static typing and dynamic metaprogramming
Computer Languages, Systems and Structures
Executing code in the past: efficient in-memory object graph versioning
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Computer Languages, Systems and Structures
Unanticipated partial behavioral reflection
ISC'06 Proceedings of the 14th international conference on Advances in smalltalk
A reflective framework for fine-grained adaptation of aspect-oriented compositions
SC'08 Proceedings of the 7th international conference on Software composition
Read-only execution for dynamic languages
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
Polymorphic bytecode instrumentation
Proceedings of the tenth international conference on Aspect-oriented software development
Hi-index | 0.00 |
Transforming programs to alter their semantics is of wide interest, for purposes as diverse as off-the-shelf component adaptation, optimization, trace generation, and experimentation with new language features. The current wave of interest in advanced technologies for better separation of concerns, such as aspect-oriented programming, is a solid testimony of this fact. Strangely enough, almost all proposals are formulated in the context of Java, in which tool providers encounter severe restrictions due to the rigidity of the environment. This paper presents BYTESURGEON, a library to transform binary code in Smalltalk. BYTESURGEON takes full advantage of the flexibility of the Squeak environment to enable bytecode transformation at runtime, thereby allowing dynamic, on-the-fly modification of applications. BYTESURGEON operates on bytecode in order to cope with situations where the source code is not available, while providing appropriate high-level abstractions so that users do not need to program at the bytecode level. We illustrate the use of BYTESURGEON via the implementation of method wrappers and a simple MOP, and report on its efficiency.