| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <cstring> | 5 #include <cstring> |
| 6 #include <functional> | 6 #include <functional> |
| 7 #include <iostream> | 7 #include <iostream> |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "src/asmjs/asm-typer.h" | 10 #include "src/asmjs/asm-typer.h" |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 } | 119 } |
| 120 | 120 |
| 121 AsmTyperHarnessBuilder* WithUndefinedGlobal( | 121 AsmTyperHarnessBuilder* WithUndefinedGlobal( |
| 122 VariableName var_name, std::function<AsmType*(Zone*)> type_creator) { | 122 VariableName var_name, std::function<AsmType*(Zone*)> type_creator) { |
| 123 auto* type = type_creator(zone_); | 123 auto* type = type_creator(zone_); |
| 124 CHECK(type->AsFunctionType() != nullptr || | 124 CHECK(type->AsFunctionType() != nullptr || |
| 125 type->AsFunctionTableType() != nullptr); | 125 type->AsFunctionTableType() != nullptr); |
| 126 WithGlobal(var_name, type); | 126 WithGlobal(var_name, type); |
| 127 auto* var_info = typer_->Lookup(DeclareVariable(var_name)); | 127 auto* var_info = typer_->Lookup(DeclareVariable(var_name)); |
| 128 CHECK(var_info); | 128 CHECK(var_info); |
| 129 var_info->SetFirstForwardUse(-1); | 129 MessageLocation location; |
| 130 var_info->SetFirstForwardUse(location); |
| 130 return this; | 131 return this; |
| 131 } | 132 } |
| 132 | 133 |
| 133 AsmTyperHarnessBuilder* WithImport(VariableName var_name, | 134 AsmTyperHarnessBuilder* WithImport(VariableName var_name, |
| 134 AsmTyper::StandardMember standard_member) { | 135 AsmTyper::StandardMember standard_member) { |
| 135 auto* var = DeclareVariable(var_name); | 136 auto* var = DeclareVariable(var_name); |
| 136 AsmTyper::VariableInfo* var_info = nullptr; | 137 AsmTyper::VariableInfo* var_info = nullptr; |
| 137 auto* stdlib_map = &typer_->stdlib_math_types_; | 138 auto* stdlib_map = &typer_->stdlib_math_types_; |
| 138 switch (standard_member) { | 139 switch (standard_member) { |
| 139 case AsmTyper::kHeap: | 140 case AsmTyper::kHeap: |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 253 success = ValidateExpressionStatment(fun_decl_) != AsmType::None(); | 254 success = ValidateExpressionStatment(fun_decl_) != AsmType::None(); |
| 254 } else { | 255 } else { |
| 255 success = typer_->Validate(); | 256 success = typer_->Validate(); |
| 256 } | 257 } |
| 257 | 258 |
| 258 if (success) { | 259 if (success) { |
| 259 std::cerr << "Asm validation succeeded\n"; | 260 std::cerr << "Asm validation succeeded\n"; |
| 260 return false; | 261 return false; |
| 261 } | 262 } |
| 262 | 263 |
| 263 if (std::strstr(typer_->error_message(), error_message) == nullptr) { | 264 std::unique_ptr<char[]> msg = i::MessageHandler::GetLocalizedMessage( |
| 265 isolate_, typer_->error_message()); |
| 266 if (std::strstr(msg.get(), error_message) == nullptr) { |
| 264 std::cerr << "Asm validation failed with the wrong error message:\n" | 267 std::cerr << "Asm validation failed with the wrong error message:\n" |
| 265 "Expected to contain '" | 268 "Expected to contain '" |
| 266 << error_message << "'\n" | 269 << error_message << "'\n" |
| 267 " Actually is '" | 270 " Actually is '" |
| 268 << typer_->error_message() << "'\n"; | 271 << msg.get() << "'\n"; |
| 269 return false; | 272 return false; |
| 270 } | 273 } |
| 271 | 274 |
| 272 return true; | 275 return true; |
| 273 } | 276 } |
| 274 | 277 |
| 275 private: | 278 private: |
| 276 Variable* DeclareVariable(VariableName var_name) { | 279 Variable* DeclareVariable(VariableName var_name) { |
| 277 auto* name_ast_string = ast_value_factory_.GetOneByteString(var_name.name_); | 280 auto* name_ast_string = ast_value_factory_.GetOneByteString(var_name.name_); |
| 278 ast_value_factory_.Internalize(isolate_); | 281 ast_value_factory_.Internalize(isolate_); |
| (...skipping 1768 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2047 if (!ValidationOf(Module(kTests[ii])) | 2050 if (!ValidationOf(Module(kTests[ii])) |
| 2048 ->FailsWithMessage( | 2051 ->FailsWithMessage( |
| 2049 "Constant in return must be signed, float, or double.")) { | 2052 "Constant in return must be signed, float, or double.")) { |
| 2050 std::cerr << "Test:\n" << kTests[ii]; | 2053 std::cerr << "Test:\n" << kTests[ii]; |
| 2051 CHECK(false); | 2054 CHECK(false); |
| 2052 } | 2055 } |
| 2053 } | 2056 } |
| 2054 } | 2057 } |
| 2055 | 2058 |
| 2056 } // namespace | 2059 } // namespace |
| OLD | NEW |