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

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

Issue 2526783002: [base] Define CHECK comparison for signed vs. unsigned (Closed)
Patch Set: Rebase & refactor for windows 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
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/base/atomic-utils.h" 7 #include "src/base/atomic-utils.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 9
10 #include "src/macro-assembler.h" 10 #include "src/macro-assembler.h"
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 45
46 byte* raw_buffer_ptr(MaybeHandle<JSArrayBuffer> buffer, int offset) { 46 byte* raw_buffer_ptr(MaybeHandle<JSArrayBuffer> buffer, int offset) {
47 return static_cast<byte*>(buffer.ToHandleChecked()->backing_store()) + offset; 47 return static_cast<byte*>(buffer.ToHandleChecked()->backing_store()) + offset;
48 } 48 }
49 49
50 MaybeHandle<String> ExtractStringFromModuleBytes( 50 MaybeHandle<String> ExtractStringFromModuleBytes(
51 Isolate* isolate, Handle<WasmCompiledModule> compiled_module, 51 Isolate* isolate, Handle<WasmCompiledModule> compiled_module,
52 uint32_t offset, uint32_t size) { 52 uint32_t offset, uint32_t size) {
53 // TODO(wasm): cache strings from modules if it's a performance win. 53 // TODO(wasm): cache strings from modules if it's a performance win.
54 Handle<SeqOneByteString> module_bytes = compiled_module->module_bytes(); 54 Handle<SeqOneByteString> module_bytes = compiled_module->module_bytes();
55 DCHECK_GE(static_cast<size_t>(module_bytes->length()), offset); 55 DCHECK_GE(module_bytes->length(), offset);
56 DCHECK_GE(static_cast<size_t>(module_bytes->length() - offset), size); 56 DCHECK_GE(module_bytes->length() - offset, size);
57 Address raw = module_bytes->GetCharsAddress() + offset; 57 Address raw = module_bytes->GetCharsAddress() + offset;
58 if (!unibrow::Utf8::Validate(reinterpret_cast<const byte*>(raw), size)) 58 if (!unibrow::Utf8::Validate(reinterpret_cast<const byte*>(raw), size))
59 return {}; // UTF8 decoding error for name. 59 return {}; // UTF8 decoding error for name.
60 return isolate->factory()->NewStringFromUtf8SubString( 60 return isolate->factory()->NewStringFromUtf8SubString(
61 module_bytes, static_cast<int>(offset), static_cast<int>(size)); 61 module_bytes, static_cast<int>(offset), static_cast<int>(size));
62 } 62 }
63 63
64 void ReplaceReferenceInCode(Handle<Code> code, Handle<Object> old_ref, 64 void ReplaceReferenceInCode(Handle<Code> code, Handle<Object> old_ref,
65 Handle<Object> new_ref) { 65 Handle<Object> new_ref) {
66 for (RelocIterator it(*code, 1 << RelocInfo::EMBEDDED_OBJECT); !it.done(); 66 for (RelocIterator it(*code, 1 << RelocInfo::EMBEDDED_OBJECT); !it.done();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 // things that would be unsafe if they expected guard pages where there 103 // things that would be unsafe if they expected guard pages where there
104 // weren't any. 104 // weren't any.
105 if (enable_guard_regions && kGuardRegionsSupported) { 105 if (enable_guard_regions && kGuardRegionsSupported) {
106 // TODO(eholk): On Windows we want to make sure we don't commit the guard 106 // TODO(eholk): On Windows we want to make sure we don't commit the guard
107 // pages yet. 107 // pages yet.
108 108
109 // We always allocate the largest possible offset into the heap, so the 109 // We always allocate the largest possible offset into the heap, so the
110 // addressable memory after the guard page can be made inaccessible. 110 // addressable memory after the guard page can be made inaccessible.
111 const size_t alloc_size = 111 const size_t alloc_size =
112 RoundUp(kWasmMaxHeapOffset, base::OS::CommitPageSize()); 112 RoundUp(kWasmMaxHeapOffset, base::OS::CommitPageSize());
113 DCHECK_EQ(0u, size % base::OS::CommitPageSize()); 113 DCHECK_EQ(0, size % base::OS::CommitPageSize());
114 114
115 // AllocateGuarded makes the whole region inaccessible by default. 115 // AllocateGuarded makes the whole region inaccessible by default.
116 void* memory = base::OS::AllocateGuarded(alloc_size); 116 void* memory = base::OS::AllocateGuarded(alloc_size);
117 if (memory == nullptr) { 117 if (memory == nullptr) {
118 return nullptr; 118 return nullptr;
119 } 119 }
120 120
121 // Make the part we care about accessible. 121 // Make the part we care about accessible.
122 base::OS::Unprotect(memory, size); 122 base::OS::Unprotect(memory, size);
123 123
(...skipping 757 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 isolate, &module_env, wasm_code, exp.index); 881 isolate, &module_env, wasm_code, exp.index);
882 int export_index = static_cast<int>(functions.size() + func_index); 882 int export_index = static_cast<int>(functions.size() + func_index);
883 code_table->set(export_index, *wrapper_code); 883 code_table->set(export_index, *wrapper_code);
884 func_index++; 884 func_index++;
885 } 885 }
886 886
887 { 887 {
888 // TODO(wasm): only save the sections necessary to deserialize a 888 // TODO(wasm): only save the sections necessary to deserialize a
889 // {WasmModule}. E.g. function bodies could be omitted. 889 // {WasmModule}. E.g. function bodies could be omitted.
890 size_t module_bytes_len = module_end - module_start; 890 size_t module_bytes_len = module_end - module_start;
891 DCHECK_LE(module_bytes_len, static_cast<size_t>(kMaxInt)); 891 DCHECK_LE(module_bytes_len, kMaxInt);
892 Vector<const uint8_t> module_bytes_vec(module_start, 892 Vector<const uint8_t> module_bytes_vec(module_start,
893 static_cast<int>(module_bytes_len)); 893 static_cast<int>(module_bytes_len));
894 Handle<String> module_bytes_string = 894 Handle<String> module_bytes_string =
895 factory->NewStringFromOneByte(module_bytes_vec, TENURED) 895 factory->NewStringFromOneByte(module_bytes_vec, TENURED)
896 .ToHandleChecked(); 896 .ToHandleChecked();
897 DCHECK(module_bytes_string->IsSeqOneByteString()); 897 DCHECK(module_bytes_string->IsSeqOneByteString());
898 ret->set_module_bytes(Handle<SeqOneByteString>::cast(module_bytes_string)); 898 ret->set_module_bytes(Handle<SeqOneByteString>::cast(module_bytes_string));
899 } 899 }
900 900
901 return ret; 901 return ret;
(...skipping 1105 matching lines...) Expand 10 before | Expand all | Expand 10 after
2007 2007
2008 DCHECK_EQ(origin == kAsmJsOrigin, !asm_js_script.is_null()); 2008 DCHECK_EQ(origin == kAsmJsOrigin, !asm_js_script.is_null());
2009 DCHECK(!compiled_module->has_script()); 2009 DCHECK(!compiled_module->has_script());
2010 DCHECK(!compiled_module->has_asm_js_offset_tables()); 2010 DCHECK(!compiled_module->has_asm_js_offset_tables());
2011 if (origin == kAsmJsOrigin) { 2011 if (origin == kAsmJsOrigin) {
2012 // Set script for the asm.js source, and the offset table mapping wasm byte 2012 // Set script for the asm.js source, and the offset table mapping wasm byte
2013 // offsets to source positions. 2013 // offsets to source positions.
2014 compiled_module->set_script(asm_js_script); 2014 compiled_module->set_script(asm_js_script);
2015 size_t offset_tables_len = 2015 size_t offset_tables_len =
2016 asm_js_offset_tables_end - asm_js_offset_tables_start; 2016 asm_js_offset_tables_end - asm_js_offset_tables_start;
2017 DCHECK_GE(static_cast<size_t>(kMaxInt), offset_tables_len); 2017 DCHECK_GE(kMaxInt, offset_tables_len);
2018 Handle<ByteArray> offset_tables = 2018 Handle<ByteArray> offset_tables =
2019 isolate->factory()->NewByteArray(static_cast<int>(offset_tables_len)); 2019 isolate->factory()->NewByteArray(static_cast<int>(offset_tables_len));
2020 memcpy(offset_tables->GetDataStartAddress(), asm_js_offset_tables_start, 2020 memcpy(offset_tables->GetDataStartAddress(), asm_js_offset_tables_start,
2021 offset_tables_len); 2021 offset_tables_len);
2022 compiled_module->set_asm_js_offset_tables(offset_tables); 2022 compiled_module->set_asm_js_offset_tables(offset_tables);
2023 } else { 2023 } else {
2024 // Create a new Script object representing this wasm module, store it in the 2024 // Create a new Script object representing this wasm module, store it in the
2025 // compiled wasm module, and register it at the debugger. 2025 // compiled wasm module, and register it at the debugger.
2026 Handle<Script> script = 2026 Handle<Script> script =
2027 isolate->factory()->NewScript(isolate->factory()->empty_string()); 2027 isolate->factory()->NewScript(isolate->factory()->empty_string());
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
2266 MaybeHandle<String> WasmCompiledModule::GetFunctionName( 2266 MaybeHandle<String> WasmCompiledModule::GetFunctionName(
2267 Handle<WasmCompiledModule> compiled_module, uint32_t func_index) { 2267 Handle<WasmCompiledModule> compiled_module, uint32_t func_index) {
2268 DCHECK_LT(func_index, compiled_module->module()->functions.size()); 2268 DCHECK_LT(func_index, compiled_module->module()->functions.size());
2269 WasmFunction& function = compiled_module->module()->functions[func_index]; 2269 WasmFunction& function = compiled_module->module()->functions[func_index];
2270 Isolate* isolate = compiled_module->GetIsolate(); 2270 Isolate* isolate = compiled_module->GetIsolate();
2271 MaybeHandle<String> string = ExtractStringFromModuleBytes( 2271 MaybeHandle<String> string = ExtractStringFromModuleBytes(
2272 isolate, compiled_module, function.name_offset, function.name_length); 2272 isolate, compiled_module, function.name_offset, function.name_length);
2273 if (!string.is_null()) return string.ToHandleChecked(); 2273 if (!string.is_null()) return string.ToHandleChecked();
2274 return {}; 2274 return {};
2275 } 2275 }
OLDNEW
« src/base/logging.h ('K') | « src/wasm/wasm-module.h ('k') | src/wasm/wasm-objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698