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

Side by Side Diff: test/cctest/wasm/test-run-wasm-module.cc

Issue 2646713002: [wasm] Enable content policy for wasm compilation. (Closed)
Patch Set: CompileError 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 | « src/wasm/wasm-module.cc ('k') | no next file » | no next file with comments »
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 <stdlib.h> 5 #include <stdlib.h>
6 #include <string.h> 6 #include <string.h>
7 7
8 #include "src/snapshot/code-serializer.h" 8 #include "src/snapshot/code-serializer.h"
9 #include "src/version.h" 9 #include "src/version.h"
10 #include "src/wasm/module-decoder.h" 10 #include "src/wasm/module-decoder.h"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 } 211 }
212 212
213 // Approximate gtest TEST_F style, in case we adopt gtest. 213 // Approximate gtest TEST_F style, in case we adopt gtest.
214 class WasmSerializationTest { 214 class WasmSerializationTest {
215 public: 215 public:
216 WasmSerializationTest() : zone_(&allocator_, ZONE_NAME) { 216 WasmSerializationTest() : zone_(&allocator_, ZONE_NAME) {
217 // Don't call here if we move to gtest. 217 // Don't call here if we move to gtest.
218 SetUp(); 218 SetUp();
219 } 219 }
220 220
221 static void BuildWireBytes(Zone* zone, ZoneBuffer* buffer) {
222 WasmModuleBuilder* builder = new (zone) WasmModuleBuilder(zone);
223 TestSignatures sigs;
224
225 WasmFunctionBuilder* f = builder->AddFunction(sigs.i_i());
226 byte code[] = {WASM_GET_LOCAL(0), kExprI32Const, 1, kExprI32Add};
227 EMIT_CODE_WITH_END(f, code);
228 f->ExportAs(CStrVector(kFunctionName));
229
230 builder->WriteTo(*buffer);
231 }
232
221 void ClearSerializedData() { 233 void ClearSerializedData() {
222 serialized_bytes_.first = nullptr; 234 serialized_bytes_.first = nullptr;
223 serialized_bytes_.second = 0; 235 serialized_bytes_.second = 0;
224 } 236 }
225 237
226 void InvalidateVersion() { 238 void InvalidateVersion() {
227 uint32_t* buffer = reinterpret_cast<uint32_t*>( 239 uint32_t* buffer = reinterpret_cast<uint32_t*>(
228 const_cast<uint8_t*>(serialized_bytes_.first)); 240 const_cast<uint8_t*>(serialized_bytes_.first));
229 buffer[SerializedCodeData::kVersionHashOffset] = Version::Hash() + 1; 241 buffer[SerializedCodeData::kVersionHashOffset] = Version::Hash() + 1;
230 } 242 }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 284
273 Isolate* current_isolate() { 285 Isolate* current_isolate() {
274 return reinterpret_cast<Isolate*>(current_isolate_v8_); 286 return reinterpret_cast<Isolate*>(current_isolate_v8_);
275 } 287 }
276 288
277 ~WasmSerializationTest() { 289 ~WasmSerializationTest() {
278 // Don't call from here if we move to gtest 290 // Don't call from here if we move to gtest
279 TearDown(); 291 TearDown();
280 } 292 }
281 293
294 v8::Isolate* current_isolate_v8() { return current_isolate_v8_; }
295
282 private: 296 private:
283 static const char* kFunctionName; 297 static const char* kFunctionName;
284 298
285 Zone* zone() { return &zone_; } 299 Zone* zone() { return &zone_; }
286 const v8::WasmCompiledModule::CallerOwnedBuffer& wire_bytes() const { 300 const v8::WasmCompiledModule::CallerOwnedBuffer& wire_bytes() const {
287 return wire_bytes_; 301 return wire_bytes_;
288 } 302 }
289 303
290 const v8::WasmCompiledModule::CallerOwnedBuffer& serialized_bytes() const { 304 const v8::WasmCompiledModule::CallerOwnedBuffer& serialized_bytes() const {
291 return serialized_bytes_; 305 return serialized_bytes_;
292 } 306 }
293 307
294 v8::Isolate* current_isolate_v8() { return current_isolate_v8_; }
295
296 void SetUp() { 308 void SetUp() {
297 WasmModuleBuilder* builder = new (zone()) WasmModuleBuilder(zone());
298 TestSignatures sigs;
299
300 WasmFunctionBuilder* f = builder->AddFunction(sigs.i_i());
301 byte code[] = {WASM_GET_LOCAL(0), kExprI32Const, 1, kExprI32Add};
302 EMIT_CODE_WITH_END(f, code);
303 f->ExportAs(CStrVector(kFunctionName));
304
305 ZoneBuffer buffer(&zone_); 309 ZoneBuffer buffer(&zone_);
306 builder->WriteTo(buffer); 310 WasmSerializationTest::BuildWireBytes(zone(), &buffer);
307 311
308 Isolate* serialization_isolate = CcTest::InitIsolateOnce(); 312 Isolate* serialization_isolate = CcTest::InitIsolateOnce();
309 ErrorThrower thrower(serialization_isolate, ""); 313 ErrorThrower thrower(serialization_isolate, "");
310 uint8_t* bytes = nullptr; 314 uint8_t* bytes = nullptr;
311 size_t bytes_size = 0; 315 size_t bytes_size = 0;
312 { 316 {
313 HandleScope scope(serialization_isolate); 317 HandleScope scope(serialization_isolate);
314 testing::SetupIsolateForWasmModule(serialization_isolate); 318 testing::SetupIsolateForWasmModule(serialization_isolate);
315 319
316 ModuleResult decoding_result = 320 ModuleResult decoding_result =
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 { 416 {
413 HandleScope scope(test.current_isolate()); 417 HandleScope scope(test.current_isolate());
414 test.InvalidateVersion(); 418 test.InvalidateVersion();
415 test.InvalidateWireBytes(); 419 test.InvalidateWireBytes();
416 test.Deserialize(); 420 test.Deserialize();
417 } 421 }
418 Cleanup(test.current_isolate()); 422 Cleanup(test.current_isolate());
419 Cleanup(); 423 Cleanup();
420 } 424 }
421 425
426 bool False(v8::Local<v8::Context> context) { return false; }
427
428 TEST(BlockWasmCodeGen) {
429 v8::internal::AccountingAllocator allocator;
430 Zone zone(&allocator, ZONE_NAME);
431 ZoneBuffer buffer(&zone);
432 WasmSerializationTest::BuildWireBytes(&zone, &buffer);
433 Isolate* isolate = CcTest::InitIsolateOnce();
434 HandleScope scope(isolate);
435 testing::SetupIsolateForWasmModule(isolate);
436 CcTest::isolate()->SetAllowCodeGenerationFromStringsCallback(False);
437
438 ErrorThrower thrower(isolate, "block codegen");
439 MaybeHandle<WasmModuleObject> ret = wasm::CreateModuleObjectFromBytes(
440 isolate, buffer.begin(), buffer.end(), &thrower,
441 wasm::ModuleOrigin::kWasmOrigin, Handle<v8::internal::Script>::null(),
442 Vector<const byte>::empty());
443 CcTest::isolate()->SetAllowCodeGenerationFromStringsCallback(nullptr);
444 CHECK(ret.is_null());
445 CHECK(thrower.error());
446 }
447
448 TEST(BlockWasmCodeGenAtDeserialization) {
449 WasmSerializationTest test;
450 {
451 HandleScope scope(test.current_isolate());
452 test.current_isolate_v8()->SetAllowCodeGenerationFromStringsCallback(False);
453 v8::MaybeLocal<v8::WasmCompiledModule> nothing = test.Deserialize();
454 CHECK(nothing.IsEmpty());
455 }
456 Cleanup(test.current_isolate());
457 Cleanup();
458 }
459
422 TEST(MemorySize) { 460 TEST(MemorySize) {
423 { 461 {
424 // Initial memory size is 16, see wasm-module-builder.cc 462 // Initial memory size is 16, see wasm-module-builder.cc
425 static const int kExpectedValue = 16; 463 static const int kExpectedValue = 16;
426 TestSignatures sigs; 464 TestSignatures sigs;
427 v8::internal::AccountingAllocator allocator; 465 v8::internal::AccountingAllocator allocator;
428 Zone zone(&allocator, ZONE_NAME); 466 Zone zone(&allocator, ZONE_NAME);
429 467
430 WasmModuleBuilder* builder = new (&zone) WasmModuleBuilder(&zone); 468 WasmModuleBuilder* builder = new (&zone) WasmModuleBuilder(&zone);
431 WasmFunctionBuilder* f = builder->AddFunction(sigs.i_v()); 469 WasmFunctionBuilder* f = builder->AddFunction(sigs.i_v());
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 }; 955 };
918 956
919 testing::CompileInstantiateWasmModuleForTesting(isolate, &thrower, data, 957 testing::CompileInstantiateWasmModuleForTesting(isolate, &thrower, data,
920 data + arraysize(data), 958 data + arraysize(data),
921 ModuleOrigin::kWasmOrigin); 959 ModuleOrigin::kWasmOrigin);
922 // It should be possible to instantiate this module. 960 // It should be possible to instantiate this module.
923 CHECK(!thrower.error()); 961 CHECK(!thrower.error());
924 } 962 }
925 Cleanup(); 963 Cleanup();
926 } 964 }
OLDNEW
« no previous file with comments | « src/wasm/wasm-module.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698