Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(390)

Unified Diff: test/cctest/asmjs/test-asm-typer.cc

Issue 2147403002: V8. ASM-2-WASM. Fixes issue 628446. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/asmjs/asm-typer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/asmjs/test-asm-typer.cc
diff --git a/test/cctest/asmjs/test-asm-typer.cc b/test/cctest/asmjs/test-asm-typer.cc
index 2be20f189bf70b756c4d3a914470b13bd0f9a72a..6c98eb245c34d87bd795331f1f628bc60b213bb3 100644
--- a/test/cctest/asmjs/test-asm-typer.cc
+++ b/test/cctest/asmjs/test-asm-typer.cc
@@ -177,18 +177,16 @@ class AsmTyperHarnessBuilder {
AsmTyperHarnessBuilder* WithStdlib(VariableName var_name) {
auto* var = DeclareVariable(var_name);
- auto* var_info = new (zone_) AsmTyper::VariableInfo();
- var_info->set_mutability(AsmTyper::VariableInfo::kImmutableGlobal);
- var_info->set_standard_member(AsmTyper::kStdlib);
+ auto* var_info =
+ AsmTyper::VariableInfo::ForSpecialSymbol(zone_, AsmTyper::kStdlib);
CHECK(typer_->AddGlobal(var, var_info));
return this;
}
AsmTyperHarnessBuilder* WithHeap(VariableName var_name) {
auto* var = DeclareVariable(var_name);
- auto* var_info = new (zone_) AsmTyper::VariableInfo();
- var_info->set_mutability(AsmTyper::VariableInfo::kImmutableGlobal);
- var_info->set_standard_member(AsmTyper::kHeap);
+ auto* var_info =
+ AsmTyper::VariableInfo::ForSpecialSymbol(zone_, AsmTyper::kHeap);
CHECK(typer_->AddGlobal(var, var_info));
return this;
}
@@ -196,9 +194,7 @@ class AsmTyperHarnessBuilder {
AsmTyperHarnessBuilder* WithFFI(VariableName var_name) {
auto* var = DeclareVariable(var_name);
auto* var_info =
- new (zone_) AsmTyper::VariableInfo(AsmType::FFIType(zone_));
- var_info->set_mutability(AsmTyper::VariableInfo::kImmutableGlobal);
- var_info->set_standard_member(AsmTyper::kFFI);
+ AsmTyper::VariableInfo::ForSpecialSymbol(zone_, AsmTyper::kFFI);
CHECK(typer_->AddGlobal(var, var_info));
return this;
}
@@ -910,6 +906,15 @@ TEST(ErrorsInExpression) {
} kTests[] = {
{"noy_a_function();", "Unanotated call to a function must be a call to"},
{"a = 0;", "Undeclared identifier"},
+ // we can't verify the module's name being referenced here because
+ // expression validation does not invoke ValidateModule, which sets up the
+ // module information in the AsmTyper.
+ {"stdlib", "accessed by ordinary expressions"},
+ {"ffi", "accessed by ordinary expressions"},
+ {"heap", "accessed by ordinary expressions"},
+ {"d2d", "accessed by ordinary expression"},
+ {"fround", "accessed by ordinary expression"},
+ {"d2s_tbl", "accessed by ordinary expression"},
{"ilocal = +1.0", "Type mismatch in assignment"},
{"!dlocal", "Invalid type for !"},
{"2 * dlocal", "Invalid types for intish *"},
@@ -989,6 +994,9 @@ TEST(ErrorsInExpression) {
for (size_t ii = 0; ii < arraysize(kTests); ++ii) {
const auto* test = kTests + ii;
if (!ValidationOf(Expression(test->expression))
+ ->WithStdlib(DynamicGlobal("stdlib"))
+ ->WithFFI(DynamicGlobal("ffi"))
+ ->WithHeap(DynamicGlobal("heap"))
->WithLocal(DynamicGlobal("iish"), iw::AsmType::Intish())
->WithLocal(DynamicGlobal("ilocal"), iw::AsmType::Int())
->WithLocal(DynamicGlobal("dlocal"), iw::AsmType::Double())
@@ -1763,4 +1771,29 @@ TEST(ValidateCall) {
}
}
+TEST(CannotReferenceModuleName) {
+ v8::V8::Initialize();
+
+ const struct {
+ const char* module;
+ const char* error_message;
+ } kTests[] = {
+ {"function asm() {\n"
+ " 'use asm';\n"
+ " function f() { asm; }\n"
+ "}",
+ "accessed by ordinary expressions"},
+ {"function asm() { 'use asm'; return asm; }", "Module cannot export"},
+ };
+
+ for (size_t ii = 0; ii < arraysize(kTests); ++ii) {
+ const auto* test = kTests + ii;
+ if (!ValidationOf(Module(test->module))
+ ->FailsWithMessage(test->error_message)) {
+ std::cerr << "Test:\n" << test->module;
+ CHECK(false);
+ }
+ }
+}
+
} // namespace
« no previous file with comments | « src/asmjs/asm-typer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698