18b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// Copyright 2011 the V8 project authors. All rights reserved. 2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch// found in the LICENSE file. 4a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 5a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#ifndef V8_REWRITER_H_ 6a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#define V8_REWRITER_H_ 7a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 8a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace v8 { 9a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blocknamespace internal { 10a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 11f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdochclass CompilationInfo; 12a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 13a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Blockclass Rewriter { 14a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block public: 15f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdoch // Rewrite top-level code (ECMA 262 "programs") so as to conservatively 16f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdoch // include an assignment of the value of the last statement in the code to 17f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdoch // a compiler-generated temporary variable wherever needed. 18f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdoch // 19f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdoch // Assumes code has been parsed and scopes have been analyzed. Mutates the 20f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdoch // AST, so the AST should not continue to be used in the case of failure. 21f87a203d89e1bbb6708282e0b64dbd13d59b723dBen Murdoch static bool Rewrite(CompilationInfo* info); 22a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block}; 23a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 24a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 25a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block} } // namespace v8::internal 26a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block 27a7e24c173cf37484693b9abb38e494fa7bd7baebSteve Block#endif // V8_REWRITER_H_ 28