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

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

Issue 2526783002: [base] Define CHECK comparison for signed vs. unsigned (Closed)
Patch Set: Rebase Created 4 years 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') | src/wasm/wasm-text.cc » ('j') | 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 "src/wasm/wasm-objects.h" 5 #include "src/wasm/wasm-objects.h"
6 6
7 #include "src/wasm/module-decoder.h" 7 #include "src/wasm/module-decoder.h"
8 #include "src/wasm/wasm-module.h" 8 #include "src/wasm/wasm-module.h"
9 9
10 #define TRACE(...) \ 10 #define TRACE(...) \
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 44
45 static uint32_t SafeUint32(Object* value) { 45 static uint32_t SafeUint32(Object* value) {
46 if (value->IsSmi()) { 46 if (value->IsSmi()) {
47 int32_t val = Smi::cast(value)->value(); 47 int32_t val = Smi::cast(value)->value();
48 CHECK_GE(val, 0); 48 CHECK_GE(val, 0);
49 return static_cast<uint32_t>(val); 49 return static_cast<uint32_t>(val);
50 } 50 }
51 DCHECK(value->IsHeapNumber()); 51 DCHECK(value->IsHeapNumber());
52 HeapNumber* num = HeapNumber::cast(value); 52 HeapNumber* num = HeapNumber::cast(value);
53 CHECK_GE(num->value(), 0.0); 53 CHECK_GE(num->value(), 0.0);
54 CHECK_LE(num->value(), static_cast<double>(kMaxUInt32)); 54 CHECK_LE(num->value(), kMaxUInt32);
55 return static_cast<uint32_t>(num->value()); 55 return static_cast<uint32_t>(num->value());
56 } 56 }
57 57
58 static int32_t SafeInt32(Object* value) { 58 static int32_t SafeInt32(Object* value) {
59 if (value->IsSmi()) { 59 if (value->IsSmi()) {
60 return Smi::cast(value)->value(); 60 return Smi::cast(value)->value();
61 } 61 }
62 DCHECK(value->IsHeapNumber()); 62 DCHECK(value->IsHeapNumber());
63 HeapNumber* num = HeapNumber::cast(value); 63 HeapNumber* num = HeapNumber::cast(value);
64 CHECK_GE(num->value(), static_cast<double>(Smi::kMinValue)); 64 CHECK_GE(num->value(), Smi::kMinValue);
65 CHECK_LE(num->value(), static_cast<double>(Smi::kMaxValue)); 65 CHECK_LE(num->value(), Smi::kMaxValue);
66 return static_cast<int32_t>(num->value()); 66 return static_cast<int32_t>(num->value());
67 } 67 }
68 68
69 Handle<WasmModuleObject> WasmModuleObject::New( 69 Handle<WasmModuleObject> WasmModuleObject::New(
70 Isolate* isolate, Handle<WasmCompiledModule> compiled_module) { 70 Isolate* isolate, Handle<WasmCompiledModule> compiled_module) {
71 ModuleOrigin origin = compiled_module->module()->origin; 71 ModuleOrigin origin = compiled_module->module()->origin;
72 72
73 Handle<JSObject> module_object; 73 Handle<JSObject> module_object;
74 if (origin == ModuleOrigin::kWasmOrigin) { 74 if (origin == ModuleOrigin::kWasmOrigin) {
75 Handle<JSFunction> module_cons( 75 Handle<JSFunction> module_cons(
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 387
388 uint32_t WasmCompiledModule::default_mem_size() const { 388 uint32_t WasmCompiledModule::default_mem_size() const {
389 return min_mem_pages() * WasmModule::kPageSize; 389 return min_mem_pages() * WasmModule::kPageSize;
390 } 390 }
391 391
392 Vector<const uint8_t> WasmCompiledModule::GetRawFunctionName( 392 Vector<const uint8_t> WasmCompiledModule::GetRawFunctionName(
393 uint32_t func_index) { 393 uint32_t func_index) {
394 DCHECK_GT(module()->functions.size(), func_index); 394 DCHECK_GT(module()->functions.size(), func_index);
395 WasmFunction& function = module()->functions[func_index]; 395 WasmFunction& function = module()->functions[func_index];
396 SeqOneByteString* bytes = ptr_to_module_bytes(); 396 SeqOneByteString* bytes = ptr_to_module_bytes();
397 DCHECK_GE(static_cast<size_t>(bytes->length()), function.name_offset); 397 DCHECK_GE(bytes->length(), function.name_offset);
398 DCHECK_GE(static_cast<size_t>(bytes->length() - function.name_offset), 398 DCHECK_GE(bytes->length() - function.name_offset, function.name_length);
399 function.name_length);
400 return Vector<const uint8_t>(bytes->GetCharsAddress() + function.name_offset, 399 return Vector<const uint8_t>(bytes->GetCharsAddress() + function.name_offset,
401 function.name_length); 400 function.name_length);
402 } 401 }
403 402
404 int WasmCompiledModule::GetFunctionOffset(uint32_t func_index) const { 403 int WasmCompiledModule::GetFunctionOffset(uint32_t func_index) const {
405 std::vector<WasmFunction>& functions = module()->functions; 404 std::vector<WasmFunction>& functions = module()->functions;
406 if (static_cast<uint32_t>(func_index) >= functions.size()) return -1; 405 if (static_cast<uint32_t>(func_index) >= functions.size()) return -1;
407 DCHECK_GE(static_cast<uint32_t>(kMaxInt), 406 DCHECK_GE(kMaxInt, functions[func_index].code_start_offset);
408 functions[func_index].code_start_offset);
409 return static_cast<int>(functions[func_index].code_start_offset); 407 return static_cast<int>(functions[func_index].code_start_offset);
410 } 408 }
411 409
412 int WasmCompiledModule::GetContainingFunction(uint32_t byte_offset) const { 410 int WasmCompiledModule::GetContainingFunction(uint32_t byte_offset) const {
413 std::vector<WasmFunction>& functions = module()->functions; 411 std::vector<WasmFunction>& functions = module()->functions;
414 412
415 // Binary search for a function containing the given position. 413 // Binary search for a function containing the given position.
416 int left = 0; // inclusive 414 int left = 0; // inclusive
417 int right = static_cast<int>(functions.size()); // exclusive 415 int right = static_cast<int>(functions.size()); // exclusive
418 if (right == 0) return false; 416 if (right == 0) return false;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 461
464 AsmJsOffsetsResult asm_offsets; 462 AsmJsOffsetsResult asm_offsets;
465 { 463 {
466 DisallowHeapAllocation no_gc; 464 DisallowHeapAllocation no_gc;
467 const byte* bytes_start = offset_table->GetDataStartAddress(); 465 const byte* bytes_start = offset_table->GetDataStartAddress();
468 const byte* bytes_end = bytes_start + offset_table->length() - 1; 466 const byte* bytes_end = bytes_start + offset_table->length() - 1;
469 asm_offsets = wasm::DecodeAsmJsOffsets(bytes_start, bytes_end); 467 asm_offsets = wasm::DecodeAsmJsOffsets(bytes_start, bytes_end);
470 } 468 }
471 // Wasm bytes must be valid and must contain asm.js offset table. 469 // Wasm bytes must be valid and must contain asm.js offset table.
472 DCHECK(asm_offsets.ok()); 470 DCHECK(asm_offsets.ok());
473 DCHECK_GE(static_cast<size_t>(kMaxInt), asm_offsets.val.size()); 471 DCHECK_GE(kMaxInt, asm_offsets.val.size());
474 int num_functions = static_cast<int>(asm_offsets.val.size()); 472 int num_functions = static_cast<int>(asm_offsets.val.size());
475 int num_imported_functions = 473 int num_imported_functions =
476 static_cast<int>(compiled_module->module()->num_imported_functions); 474 static_cast<int>(compiled_module->module()->num_imported_functions);
477 DCHECK_EQ(compiled_module->module()->functions.size(), 475 DCHECK_EQ(compiled_module->module()->functions.size(),
478 static_cast<size_t>(num_functions) + num_imported_functions); 476 static_cast<size_t>(num_functions) + num_imported_functions);
479 // One byte to encode that this is a decoded table. 477 // One byte to encode that this is a decoded table.
480 int total_size = 1; 478 int total_size = 1;
481 for (int func = 0; func < num_functions; ++func) { 479 for (int func = 0; func < num_functions; ++func) {
482 size_t new_size = asm_offsets.val[func].size() * 2 * kIntSize; 480 size_t new_size = asm_offsets.val[func].size() * 2 * kIntSize;
483 DCHECK_LE(new_size, static_cast<size_t>(kMaxInt) - total_size); 481 DCHECK_LE(new_size, static_cast<size_t>(kMaxInt) - total_size);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 !array->get(kPreviousInstanceWrapper)->IsFixedArray()) 562 !array->get(kPreviousInstanceWrapper)->IsFixedArray())
565 return false; 563 return false;
566 return true; 564 return true;
567 } 565 }
568 566
569 void WasmInstanceWrapper::set_instance_object(Handle<JSObject> instance, 567 void WasmInstanceWrapper::set_instance_object(Handle<JSObject> instance,
570 Isolate* isolate) { 568 Isolate* isolate) {
571 Handle<WeakCell> cell = isolate->factory()->NewWeakCell(instance); 569 Handle<WeakCell> cell = isolate->factory()->NewWeakCell(instance);
572 set(kWrapperInstanceObject, *cell); 570 set(kWrapperInstanceObject, *cell);
573 } 571 }
OLDNEW
« no previous file with comments | « src/wasm/wasm-module.cc ('k') | src/wasm/wasm-text.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698