| Index: src/x64/codegen-x64.cc
|
| ===================================================================
|
| --- src/x64/codegen-x64.cc (revision 2253)
|
| +++ src/x64/codegen-x64.cc (working copy)
|
| @@ -25,6 +25,8 @@
|
| // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
| +// TODO(X64): Remove stdio.h when compiler test is removed.
|
| +#include <stdio.h>
|
|
|
| #include "v8.h"
|
|
|
| @@ -36,7 +38,7 @@
|
| #include "register-allocator-inl.h"
|
| #include "scopes.h"
|
|
|
| -// TEST
|
| +// TODO(X64): Remove compiler.h when compiler test is removed.
|
| #include "compiler.h"
|
|
|
| namespace v8 {
|
| @@ -137,52 +139,35 @@
|
| #endif
|
| FLAG_use_ic = false;
|
|
|
| - Handle<JSFunction> test_function = Compiler::Compile(
|
| - Factory::NewStringFromAscii(CStrVector(
|
| + // Read the file "test.js" from the current directory, compile, and run it.
|
| + // If the file is not there, use a simple script embedded here instead.
|
| + Handle<String> test_script;
|
| + FILE* file = fopen("test.js", "rb");
|
| + if (file == NULL) {
|
| + test_script = Factory::NewStringFromAscii(CStrVector(
|
| "// Put all code in anonymous function to avoid global scope.\n"
|
| "(function(){"
|
| - " function test_if_then_else(x, y, z){"
|
| - " if (x) {"
|
| - " x = y;"
|
| - " } else {"
|
| - " x = z;"
|
| - " }"
|
| - " return x;"
|
| - " }"
|
| - "\n"
|
| - " function test_recursion_with_base(x, y, z, w) {"
|
| - " if (x) {"
|
| - " x = x;"
|
| - " } else {"
|
| - " x = test_recursion_with_base(y, z, w, 0);"
|
| - " }"
|
| - " return x;"
|
| - " }"
|
| - "\n"
|
| - " function test_local_variables(x, y){"
|
| - " var w; y = x; x = w; w = y; y = x; return w;"
|
| - " };"
|
| - " test_local_variables(2,3);"
|
| - " function test_nesting_calls(x, y, zee){return zee;};"
|
| - " test_local_variables("
|
| - " test_nesting_calls(test_local_variables(1,3), 42, 47),"
|
| - " test_local_variables(-25.3, 2));"
|
| - " // return test_recursion_with_base(0, 0, 0, 47);\n"
|
| - " var x_value = 42;"
|
| - " var o = { x: x_value };"
|
| - " o.x = 43;"
|
| - " o.x;"
|
| - " var x_string = 'x';"
|
| - " o[x_string] = 44;"
|
| - " o[x_string];"
|
| - " o.f = function() { return 45; };"
|
| - " o.f();"
|
| - " var f_string = 'f';"
|
| - " o[f_string]();"
|
| - " var a = [ 1, 2, 3 ];"
|
| - " var x = true ? 42 : 32;"
|
| - " return test_if_then_else(0, 46, 47);"
|
| - "})()")),
|
| + " var x = true ? 47 : 32;"
|
| + " return x;"
|
| + "})()"));
|
| + } else {
|
| + fseek(file, 0, SEEK_END);
|
| + int size = ftell(file);
|
| + rewind(file);
|
| +
|
| + char* chars = new char[size + 1];
|
| + chars[size] = '\0';
|
| + for (int i = 0; i < size;) {
|
| + int read = fread(&chars[i], 1, size - i, file);
|
| + i += read;
|
| + }
|
| + fclose(file);
|
| + test_script = Factory::NewStringFromAscii(CStrVector(chars));
|
| + delete[] chars;
|
| + }
|
| +
|
| + Handle<JSFunction> test_function = Compiler::Compile(
|
| + test_script,
|
| Factory::NewStringFromAscii(CStrVector("CodeGeneratorTestScript")),
|
| 0,
|
| 0,
|
|
|