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

Side by Side Diff: src/wasm/wasm-module.cc

Issue 2629523007: [wasm] JS-API: enable WebAssembly.instantiate tests; fix LinkError (Closed)
Patch Set: fix errors.js Created 3 years, 11 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 unified diff | Download patch
« no previous file with comments | « no previous file | test/mjsunit/wasm/errors.js » ('j') | test/mjsunit/wasm/errors.js » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 <memory> 5 #include <memory>
6 6
7 #include "src/assembler-inl.h" 7 #include "src/assembler-inl.h"
8 #include "src/base/adapters.h" 8 #include "src/base/adapters.h"
9 #include "src/base/atomic-utils.h" 9 #include "src/base/atomic-utils.h"
10 #include "src/code-stubs.h" 10 #include "src/code-stubs.h"
(...skipping 1457 matching lines...) Expand 10 before | Expand all | Expand 10 after
1468 1468
1469 // Helper routines to print out errors with imports. 1469 // Helper routines to print out errors with imports.
1470 void ReportLinkError(const char* error, uint32_t index, 1470 void ReportLinkError(const char* error, uint32_t index,
1471 Handle<String> module_name, Handle<String> import_name) { 1471 Handle<String> module_name, Handle<String> import_name) {
1472 thrower_->LinkError( 1472 thrower_->LinkError(
1473 "Import #%d module=\"%.*s\" function=\"%.*s\" error: %s", index, 1473 "Import #%d module=\"%.*s\" function=\"%.*s\" error: %s", index,
1474 module_name->length(), module_name->ToCString().get(), 1474 module_name->length(), module_name->ToCString().get(),
1475 import_name->length(), import_name->ToCString().get(), error); 1475 import_name->length(), import_name->ToCString().get(), error);
1476 } 1476 }
1477 1477
1478 MaybeHandle<Object> ReportTypeError(const char* error, uint32_t index, 1478 MaybeHandle<Object> ReportLinkError(const char* error, uint32_t index,
1479 Handle<String> module_name) { 1479 Handle<String> module_name) {
1480 thrower_->TypeError("Import #%d module=\"%.*s\" error: %s", index, 1480 thrower_->LinkError("Import #%d module=\"%.*s\" error: %s", index,
1481 module_name->length(), module_name->ToCString().get(), 1481 module_name->length(), module_name->ToCString().get(),
1482 error); 1482 error);
1483 return MaybeHandle<Object>(); 1483 return MaybeHandle<Object>();
1484 } 1484 }
1485 1485
1486 // Look up an import value in the {ffi_} object. 1486 // Look up an import value in the {ffi_} object.
1487 MaybeHandle<Object> LookupImport(uint32_t index, Handle<String> module_name, 1487 MaybeHandle<Object> LookupImport(uint32_t index, Handle<String> module_name,
1488 Handle<String> import_name) { 1488 Handle<String> import_name) {
1489 if (ffi_.is_null()) { 1489 if (ffi_.is_null()) {
1490 return ReportTypeError("FFI is not an object", index, module_name); 1490 return ReportLinkError("FFI is not an object", index, module_name);
rossberg 2017/01/12 23:59:53 This one is not a linking error but a JS-level API
Mircea Trofin 2017/01/13 03:57:47 Oh, true. I'll actually move that out and DCHECK
1491 } 1491 }
1492 1492
1493 // Look up the module first. 1493 // Look up the module first.
1494 MaybeHandle<Object> result = 1494 MaybeHandle<Object> result =
1495 Object::GetPropertyOrElement(ffi_, module_name); 1495 Object::GetPropertyOrElement(ffi_, module_name);
1496 if (result.is_null()) { 1496 if (result.is_null()) {
1497 return ReportTypeError("module not found", index, module_name); 1497 return ReportLinkError("module not found", index, module_name);
1498 } 1498 }
1499 1499
1500 Handle<Object> module = result.ToHandleChecked(); 1500 Handle<Object> module = result.ToHandleChecked();
1501 1501
1502 // Look up the value in the module. 1502 // Look up the value in the module.
1503 if (!module->IsJSReceiver()) { 1503 if (!module->IsJSReceiver()) {
1504 return ReportTypeError("module is not an object or function", index, 1504 return ReportLinkError("module is not an object or function", index,
1505 module_name); 1505 module_name);
1506 } 1506 }
1507 1507
1508 result = Object::GetPropertyOrElement(module, import_name); 1508 result = Object::GetPropertyOrElement(module, import_name);
1509 if (result.is_null()) { 1509 if (result.is_null()) {
1510 ReportLinkError("import not found", index, module_name, import_name); 1510 ReportLinkError("import not found", index, module_name, import_name);
1511 return MaybeHandle<JSFunction>(); 1511 return MaybeHandle<JSFunction>();
1512 } 1512 }
1513 1513
1514 return result; 1514 return result;
(...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after
2487 2487
2488 JSObject::AddProperty(entry, name_string, export_name.ToHandleChecked(), 2488 JSObject::AddProperty(entry, name_string, export_name.ToHandleChecked(),
2489 NONE); 2489 NONE);
2490 JSObject::AddProperty(entry, kind_string, export_kind, NONE); 2490 JSObject::AddProperty(entry, kind_string, export_kind, NONE);
2491 2491
2492 storage->set(index, *entry); 2492 storage->set(index, *entry);
2493 } 2493 }
2494 2494
2495 return array_object; 2495 return array_object;
2496 } 2496 }
OLDNEW
« no previous file with comments | « no previous file | test/mjsunit/wasm/errors.js » ('j') | test/mjsunit/wasm/errors.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698