144bc7080a85cc25bff3b9b77cd53f7beffab711bkarlklose@chromium.org// Copyright 2011 the V8 project authors. All rights reserved.
23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be
33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file.
443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#ifndef V8_REWRITER_H_
643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#define V8_REWRITER_H_
743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
871affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace v8 {
971affb54842da76b24f0bb3184e9f0960523f89dkasperl@chromium.orgnamespace internal {
1043d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
11b61a0d13e9690ef4c2de424bbe82a38884d981a6ager@chromium.orgclass CompilationInfo;
1243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
1343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansenclass Rewriter {
1443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen public:
15b61a0d13e9690ef4c2de424bbe82a38884d981a6ager@chromium.org  // Rewrite top-level code (ECMA 262 "programs") so as to conservatively
16b61a0d13e9690ef4c2de424bbe82a38884d981a6ager@chromium.org  // include an assignment of the value of the last statement in the code to
17b61a0d13e9690ef4c2de424bbe82a38884d981a6ager@chromium.org  // a compiler-generated temporary variable wherever needed.
18b61a0d13e9690ef4c2de424bbe82a38884d981a6ager@chromium.org  //
19b61a0d13e9690ef4c2de424bbe82a38884d981a6ager@chromium.org  // Assumes code has been parsed and scopes have been analyzed.  Mutates the
20b61a0d13e9690ef4c2de424bbe82a38884d981a6ager@chromium.org  // AST, so the AST should not continue to be used in the case of failure.
21b61a0d13e9690ef4c2de424bbe82a38884d981a6ager@chromium.org  static bool Rewrite(CompilationInfo* info);
2243d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen};
2343d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
2443d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
2543d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen} }  // namespace v8::internal
2643d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen
2743d26ecc3563a46f62a0224030667c8f8f3f6cebchristian.plesner.hansen#endif  // V8_REWRITER_H_
28