Analysis and transformation in the ParaScope editor
ICS '91 Proceedings of the 5th international conference on Supercomputing
SUIF Explorer: an interactive and interprocedural parallelizer
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Automatic parallelization of divide and conquer algorithms
Proceedings of the seventh ACM SIGPLAN symposium on Principles and practice of parallel programming
Proceedings of the ACM 2000 conference on Java Grande
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
Concurrent Programming in Java. Second Edition: Design Principles and Patterns
High Performance Compilers for Parallel Computing
High Performance Compilers for Parallel Computing
Java Concurrency in Practice
Refactoring support for class library migration
OOPSLA '05 Proceedings of the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Associating synchronization constraints with data in an object-oriented language
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Regrowing a language: refactoring tools allow programming languages to evolve
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Concurrency by modularity: design patterns, a case in point
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Inferring arbitrary distributions for data and computation
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Correct refactoring of concurrent java code
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Patterns for cache optimizations on multi-processor machines
Proceedings of the 2010 Workshop on Parallel Programming Patterns
How do programs become more concurrent: a story of program transformations
Proceedings of the 4th International Workshop on Multicore Software Engineering
Transformation for class immutability
Proceedings of the 33rd International Conference on Software Engineering
Refactoring Java programs for flexible locking
Proceedings of the 33rd International Conference on Software Engineering
Refactoring pipe-like mashups for end-user programmers
Proceedings of the 33rd International Conference on Software Engineering
Kremlin: rethinking and rebooting gprof for the multicore age
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Refactoring Java programs using concurrent libraries
Proceedings of the Workshop on Parallel and Distributed Systems: Testing, Analysis, and Debugging
Are Java programmers transitioning to multicore?: a large scale study of java FLOSS
Proceedings of the compilation of the co-located workshops on DSM'11, TMC'11, AGERE!'11, AOOPES'11, NEAT'11, & VMIL'11
Differential precondition checking: A lightweight, reusable analysis for refactoring tools
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
A language-independent parallel refactoring framework
Proceedings of the Fifth Workshop on Refactoring Tools
Use, disuse, and misuse of automated refactorings
Proceedings of the 34th International Conference on Software Engineering
Build code analysis with symbolic evaluation
Proceedings of the 34th International Conference on Software Engineering
Refactoring legacy AJAX applications to improve the efficiency of the data exchange component
Journal of Systems and Software
Exposing behavioral differences in cross-language API mapping relations
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Practical static race detection for Java parallel loops
Proceedings of the 2013 International Symposium on Software Testing and Analysis
A compositional paradigm of automating refactorings
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Is this a bug or an obsolete test?
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Systematic testing of refactoring engines on real software projects
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Refactoring Flash Embedding Methods
International Journal of Systems and Service-Oriented Engineering
Invited talk on refactoring: from concurrency to mobility
Proceedings of the 2013 ACM workshop on Mobile development lifecycle
Hi-index | 0.00 |
Parallelizing existing sequential programs to run efficiently on multicores is hard. The Java 5 package java.util.concurrent (j.u.c.) supports writing concurrent programs: much of the complexity of writing thread-safe and scalable programs is hidden in the library. To use this package, programmers still need to reengineer existing code. This is tedious because it requires changing many lines of code, is error-prone because programmers can use the wrong APIs, and is omission-prone because programmers can miss opportunities to use the enhanced APIs. This paper presents our tool, Concurrencer, that enables programmers to refactor sequential code into parallel code that uses three j.u.c. concurrent utilities. Concurrencer does not require any program annotations. Its transformations span multiple, non-adjacent, program statements. A find-and-replace tool can not perform such transformations, which require program analysis. Empirical evaluation shows that Concurrencer refactors code effectively: Concurrencer correctly identifies and applies transformations that some open-source developers overlooked, and the converted code exhibits good speedup.