SOOT By Joe Palmer Information taken from

Slides:



Advertisements
Similar presentations
Java Packages CSci 1130 Intro to Computer Programming with Java Instructor Tatyana Volk.
Advertisements

1 CIS 461 Compiler Design and Construction Fall 2014 Instructor: Hugh McGuire slides derived from Tevfik Bultan, Keith Cooper, and Linda Torczon Lecture-Module.
8. Code Generation. Generate executable code for a target machine that is a faithful representation of the semantics of the source code Depends not only.
Overview Motivations Basic static and dynamic optimization methods ADAPT Dynamo.
Compiler Construction by Muhammad Bilal Zafar (AP)
Lab Information Security Using Java (Review) Lab#0 Omaima Al-Matrafi.
Java Basic Training HaiNH - FQA. Agenda Introduction to Java Java Programming Environment Language Fundamental Object Oriented Programming with Java.
Compiler Construction Sohail Aslam Lecture IR Taxonomy IRs fall into three organizational categories 1.Graphical IRs encode the compiler’s knowledge.
Cpeg421-08S/final-review1 Course Review Tom St. John.
Computer Concepts 5th Edition Parsons/Oja Page 546 CHAPTER 11 Software Engineering Section A PARSONS/OJA Computer Programming.
Chapter 1 Introduction to Object- Oriented Programming and Problem Solving.
Java for High Performance Computing Jordi Garcia Almiñana 14 de Octubre de 1998 de la era post-internet.
Combining Static and Dynamic Data in Code Visualization David Eng Sable Research Group, McGill University PASTE 2002 Charleston, South Carolina November.
1 Programming Languages b Each type of CPU has its own specific machine language b But, writing programs in machine languages is cumbersome (too detailed)
IPT Readings on Instrumentation, Profiling, and Tracing Seminar presentation by Alessandra Gorla University of Lugano December 7, 2006.
Introduction & Overview CS4533 from Cooper & Torczon.
COP4020 Programming Languages
1.3 Executing Programs. How is Computer Code Transformed into an Executable? Interpreters Compilers Hybrid systems.
LLVM Developed by University of Illinois at Urbana-Champaign CIS dept Cisc 471 Matthew Warner.
1 CSE 2102 CSE 2102 CSE 2102: Introduction to Software Engineering Ch9: Software Engineering Tools and Environments.
Chapter 1.4 Programming languages Homework Due: Monday, August 11, 2014.
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
10/1/2015© Hal Perkins & UW CSEG-1 CSE P 501 – Compilers Intermediate Representations Hal Perkins Autumn 2009.
1 October 1, October 1, 2015October 1, 2015October 1, 2015 Azusa, CA Sheldon X. Liang Ph. D. Computer Science at Azusa Pacific University Azusa.
Parser-Driven Games Tool programming © Allan C. Milne Abertay University v
Abc Compiler Zak Fry. Who and Where Programming Tools Group at Oxford University, UK – Oege de Moor Sable Research Group at McGill University, Quebec.
Introduction to Java August 14, 2008 Mrs. C. Furman.
1 COMP 3438 – Part II-Lecture 1: Overview of Compiler Design Dr. Zili Shao Department of Computing The Hong Kong Polytechnic Univ.
CS266 Software Reverse Engineering (SRE) Reversing and Patching Java Bytecode Teodoro (Ted) Cipresso,
1 Introduction to Software Engineering Lecture 1.
IXA 1234 : C++ PROGRAMMING CHAPTER 1. PROGRAMMING LANGUAGE Programming language is a computer program that can solve certain problem / task Keyword: Computer.
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
1.  10% Assignments/ class participation  10% Pop Quizzes  05% Attendance  25% Mid Term  50% Final Term 2.
Chapter 1 Introduction. Chapter 1 - Introduction 2 The Goal of Chapter 1 Introduce different forms of language translators Give a high level overview.
Bandera: Extracting Finite-state Models from Java Source Code. Paper By: James C. Corbett, Mathew Dwyer, John Hatcliff, Shawn Laubach, Corina Pasareanu,
1 Compiler Construction (CS-636) Muhammad Bilal Bashir UIIT, Rawalpindi.
Winter Compilers Software Eng. Dept. – Ort Braude Compiling Assignments and Expressions Lecturer: Esti Stein brd4.ort.org.il/~esti2.
Intermediate Code Representations
Compiler Introduction 1 Kavita Patel. Outlines 2  1.1 What Do Compilers Do?  1.2 The Structure of a Compiler  1.3 Compilation Process  1.4 Phases.
A compiler is a computer program that translate written code (source code) into another computer language Associated with high level languages A well.
 Fall Chart 2  Translators and Compilers  Textbook o Programming Language Processors in Java, Authors: David A. Watts & Deryck F. Brown, 2000,
Programming Language Concepts (CIS 635) Elsa L Gunter 4303 GITC NJIT,
Object Naming Analysis for Reverse- Engineered Sequence Diagrams Atanas (Nasko) Rountev Beth Harkness Connell Ohio State University.
Presented by : A best website designer company. Chapter 1 Introduction Prof Chung. 1.
UML. Model An abstract representation of a system. Types of model 1.Use case model 2.Domain model 3.Analysis object model 4.Implementation model 5.Test.
Review A program is… a set of instructions that tell a computer what to do. Programs can also be called… software. Hardware refers to… the physical components.
Software Engineering: Models David Millard
Programming Languages Concepts Chapter 1: Programming Languages Concepts Lecture # 4.
BlueJ X ICSE Syllabus. Board Pattern THEORY (100 marks) PRACTICAL (100 marks) PROJECT (50 marks) ASSIGNMENTS (50 marks)
Prologue Sung-Dong Kim, Dept. of Computer Engineering, Hansung University.
Single Static Assignment Intermediate Representation (or SSA IR) Many examples and pictures taken from Wikipedia.
Introduction to Algorithm. What is Algorithm? an algorithm is any well-defined computational procedure that takes some value, or set of values, as input.
Spring 2016 Program Analysis and Verification
What Do Computers Do? A computer system is
Advanced Computer Systems
PRINCIPLES OF COMPILER DESIGN
Chapter 1 Introduction.
Introduction to Compiler Construction
CSCI-235 Micro-Computer Applications
Compiler Construction (CS-636)
Chapter 1 Introduction.
课程名 编译原理 Compiling Techniques
CS 536 / Fall 2017 Introduction to programming languages and compilers
Assembler, Compiler, Interpreter
Mobile Development Workshop
Assembler, Compiler, Interpreter
Java History, Editions, Version Features
Programming language translators
Intermediate Code Generating machine-independent intermediate form.
Presentation transcript:

SOOT By Joe Palmer Information taken from

General Overview Developed by Sable Research Group out of McGill University in Used to optimize Java Bytecode 4 source languages 4 intermediate representations used

Sources Languages Primarily takes Java Source as its input Can also take:  SML  Scheme  Eiffel

I.R.’s Baf: Streamlined, stack-based representation of bytecode Abstracts type dependent variations of expressions into a single expression Jimple: Stack-less, typed, 3-Address representation of bytecode Mix between java source and java bytecode Linearization of a single expression into 3 separate statements  Only refers to 3 local vars or conts at once Only 15 jimple instructions are used  Compared to 200 possible instructions in java bytecode! Shimple: SSA-form version of Jimple Each local var has a single static point of definition (never reassign) Uses Phi-Nodes for control flow Grimp: Similar to Jimple but allows trees of expressions together with a representation of a “new” operator Expressions are “aggregated” main IR used!!

Phases of the Optimization

Analysis Tested using 8 SPECjvm98 benchmarks running on JDK 1.2  Showed 8% improvement when optimized bytecode is run using an interpreter  21% improvement when optimized bytecode is run using a JIT compiler Used in research with traditional compiler analyses, analyses for software engineering, analysis for distributed programs, and software verification  Ptolemy Project  Bandera  Canvas Project

Strengths and Future Enhancements Used as a common infrastructure with which researchers could compare common analyses Enhancements coming: Attribute management Attribute legends Improved visual attributes in source Interactive CFGs Growable graphical callgraph Making conversion from Java to Jimple more stable and complete