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

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

Issue 2148743004: WIP: wasm oob trap handling experiments (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Undoing spurious changes 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.h ('k') | src/x64/assembler-x64.h » ('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 <iostream>
5 #include <memory> 6 #include <memory>
6 7
7 #include "src/base/atomic-utils.h" 8 #include "src/base/atomic-utils.h"
8 #include "src/code-stubs.h" 9 #include "src/code-stubs.h"
9 10
10 #include "src/macro-assembler.h" 11 #include "src/macro-assembler.h"
11 #include "src/objects.h" 12 #include "src/objects.h"
12 #include "src/property-descriptor.h" 13 #include "src/property-descriptor.h"
13 #include "src/simulator.h" 14 #include "src/simulator.h"
14 #include "src/snapshot/snapshot.h" 15 #include "src/snapshot/snapshot.h"
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
428 } 429 }
429 } 430 }
430 return modified; 431 return modified;
431 } 432 }
432 433
433 void LinkModuleFunctions(Isolate* isolate, 434 void LinkModuleFunctions(Isolate* isolate,
434 std::vector<Handle<Code>>& functions) { 435 std::vector<Handle<Code>>& functions) {
435 for (size_t i = 0; i < functions.size(); ++i) { 436 for (size_t i = 0; i < functions.size(); ++i) {
436 Handle<Code> code = functions[i]; 437 Handle<Code> code = functions[i];
437 LinkFunction(code, functions, Code::WASM_FUNCTION); 438 LinkFunction(code, functions, Code::WASM_FUNCTION);
439
440 // Add this object to the signal handler table.
441 {
442 auto* handler_data = new wasm::TrapHandlerData;
443
444 handler_data->code = *code;
445
446 std::cerr << "*** STORING HANDLER DATA "
447 << reinterpret_cast<void*>(code->instruction_start()) << " ***"
448 << std::endl;
449
450 handler_data->next = wasm::gTrapHandlers;
451 wasm::gTrapHandlers = handler_data;
452 // TODO(eholk): make sure to clean all this up someday.
453 }
438 } 454 }
439 } 455 }
440 456
441 void FlushAssemblyCache(Isolate* isolate, Handle<FixedArray> functions) { 457 void FlushAssemblyCache(Isolate* isolate, Handle<FixedArray> functions) {
442 for (int i = 0; i < functions->length(); ++i) { 458 for (int i = 0; i < functions->length(); ++i) {
443 Handle<Code> code = functions->GetValueChecked<Code>(isolate, i); 459 Handle<Code> code = functions->GetValueChecked<Code>(isolate, i);
444 Assembler::FlushICache(isolate, code->instruction_start(), 460 Assembler::FlushICache(isolate, code->instruction_start(),
445 code->instruction_size()); 461 code->instruction_size());
446 } 462 }
447 } 463 }
(...skipping 698 matching lines...) Expand 10 before | Expand all | Expand 10 after
1146 CompileSequentially(isolate, this, 1162 CompileSequentially(isolate, this,
1147 temp_instance_for_compilation.function_code, thrower, 1163 temp_instance_for_compilation.function_code, thrower,
1148 &module_env); 1164 &module_env);
1149 } 1165 }
1150 if (thrower->error()) return nothing; 1166 if (thrower->error()) return nothing;
1151 1167
1152 // At this point, compilation has completed. Update the code table. 1168 // At this point, compilation has completed. Update the code table.
1153 for (size_t i = FLAG_skip_compiling_wasm_funcs; 1169 for (size_t i = FLAG_skip_compiling_wasm_funcs;
1154 i < temp_instance_for_compilation.function_code.size(); ++i) { 1170 i < temp_instance_for_compilation.function_code.size(); ++i) {
1155 Code* code = *temp_instance_for_compilation.function_code[i]; 1171 Code* code = *temp_instance_for_compilation.function_code[i];
1172
1156 compiled_functions->set(static_cast<int>(i), code); 1173 compiled_functions->set(static_cast<int>(i), code);
1157 } 1174 }
1158 1175
1159 // Create the compiled module object, and populate with compiled functions 1176 // Create the compiled module object, and populate with compiled functions
1160 // and information needed at instantiation time. This object needs to be 1177 // and information needed at instantiation time. This object needs to be
1161 // serializable. Instantiation may occur off a deserialized version of this 1178 // serializable. Instantiation may occur off a deserialized version of this
1162 // object. 1179 // object.
1163 Handle<FixedArray> ret = 1180 Handle<FixedArray> ret =
1164 factory->NewFixedArray(kCompiledWasmObjectTableSize, TENURED); 1181 factory->NewFixedArray(kCompiledWasmObjectTableSize, TENURED);
1165 ret->set(kFunctions, *compiled_functions); 1182 ret->set(kFunctions, *compiled_functions);
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after
1721 return static_cast<int32_t>(HeapNumber::cast(*result)->value()); 1738 return static_cast<int32_t>(HeapNumber::cast(*result)->value());
1722 } 1739 }
1723 thrower->Error("WASM.compileRun() failed: Return value should be number"); 1740 thrower->Error("WASM.compileRun() failed: Return value should be number");
1724 return -1; 1741 return -1;
1725 } 1742 }
1726 1743
1727 } // namespace testing 1744 } // namespace testing
1728 } // namespace wasm 1745 } // namespace wasm
1729 } // namespace internal 1746 } // namespace internal
1730 } // namespace v8 1747 } // namespace v8
OLDNEW
« no previous file with comments | « src/wasm/wasm-module.h ('k') | src/x64/assembler-x64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698