Channels ▼

Web Development

LLVM Helps Bring Flash to iPhone

Wondering how Adobe was able to get Flash onto the iPhone, despite Apple's prohibition against anyone's runtime modules from appearing? Look no further than University Illinois computer science professor Vikram Adve's lab, where he and his students working to support their open source Low Level Virtual Machine (LLVM).

LLVM is a compilation strategy able to do sophisticated tasks throughout the complete lifecycle of a process: compile-time, link-time, install-time, load-time, run-time, and even idle-time. Designed from the ground up as a framework for lifelong code representation, LLVM is designed to enable effective program optimization across the entire lifetime of a program. LLVM is capable of supporting both sophisticated cross-module inter-procedural optimization and very fast run-time optimization and code generation.

These capabilities make LLVM well-suited for developers looking to create new mid-level language-independent analyses and optimizations of all sorts, including those that require extensive inter-procedural analysis.

"We created a new compiler front end that allowed LLVM to understand ActionScript 3 and used its existing ARM back end to output native ARM assembly code," explained Aditya Bansod, an Adobe engineer. "We call this Ahead of Time (AOT) compilation -- in contrast to the way Adobe Flash Player and Adobe AIR function on the desktop using Just in Time (JIT) compilation. Since we are able to compile ActionScript to ARM ahead of time, the application gets all the performance benefits that the JIT would offer and the license compliance of not requiring a runtime in the final application."

You can learn more from this Adobe video which discusses Flash development on the iPhone platform.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.