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

Unified Diff: src/wasm/wasm-module.h

Issue 2490663002: [wasm] Move all heap-allocated WASM structures into wasm-objects.h. (Closed)
Patch Set: [wasm] Move all heap-allocated WASM structures into wasm-objects.h. Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/wasm/wasm-js.cc ('k') | src/wasm/wasm-module.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/wasm/wasm-module.h
diff --git a/src/wasm/wasm-module.h b/src/wasm/wasm-module.h
index a9d61fd71fead418ee80aef288cd2f5ee6f0a718..2b7f28063cd2325aa96592daa5df558a5212abde 100644
--- a/src/wasm/wasm-module.h
+++ b/src/wasm/wasm-module.h
@@ -19,6 +19,10 @@
namespace v8 {
namespace internal {
+class WasmCompiledModule;
+class WasmDebugInfo;
+class WasmModuleObject;
+
namespace compiler {
class CallDescriptor;
class WasmCompilationUnit;
@@ -58,8 +62,6 @@ inline bool IsValidSectionCode(uint8_t byte) {
const char* SectionName(WasmSectionCode code);
-class WasmDebugInfo;
-
// Constants for fixed-size elements within a module.
static const uint32_t kMaxReturnCount = 1;
static const uint8_t kResizableMaximumFlag = 1;
@@ -170,8 +172,6 @@ struct WasmExport {
enum ModuleOrigin { kWasmOrigin, kAsmJsOrigin };
-class WasmCompiledModule;
-
// Static representation of a module.
struct V8_EXPORT_PRIVATE WasmModule {
static const uint32_t kPageSize = 0x10000; // Page size, 64kb.
@@ -353,125 +353,6 @@ std::ostream& operator<<(std::ostream& os, const WasmModule& module);
std::ostream& operator<<(std::ostream& os, const WasmFunction& function);
std::ostream& operator<<(std::ostream& os, const WasmFunctionName& name);
-class WasmCompiledModule : public FixedArray {
- public:
- static WasmCompiledModule* cast(Object* fixed_array) {
- SLOW_DCHECK(IsWasmCompiledModule(fixed_array));
- return reinterpret_cast<WasmCompiledModule*>(fixed_array);
- }
-
-#define WCM_OBJECT_OR_WEAK(TYPE, NAME, ID) \
- Handle<TYPE> NAME() const { return handle(ptr_to_##NAME()); } \
- \
- MaybeHandle<TYPE> maybe_##NAME() const { \
- if (has_##NAME()) return NAME(); \
- return MaybeHandle<TYPE>(); \
- } \
- \
- TYPE* ptr_to_##NAME() const { \
- Object* obj = get(ID); \
- if (!obj->Is##TYPE()) return nullptr; \
- return TYPE::cast(obj); \
- } \
- \
- void set_##NAME(Handle<TYPE> value) { set_ptr_to_##NAME(*value); } \
- \
- void set_ptr_to_##NAME(TYPE* value) { set(ID, value); } \
- \
- bool has_##NAME() const { return get(ID)->Is##TYPE(); } \
- \
- void reset_##NAME() { set_undefined(ID); }
-
-#define WCM_OBJECT(TYPE, NAME) WCM_OBJECT_OR_WEAK(TYPE, NAME, kID_##NAME)
-
-#define WCM_SMALL_NUMBER(TYPE, NAME) \
- TYPE NAME() const { \
- return static_cast<TYPE>(Smi::cast(get(kID_##NAME))->value()); \
- } \
- void set_##NAME(TYPE value) { set(kID_##NAME, Smi::FromInt(value)); }
-
-#define WCM_WEAK_LINK(TYPE, NAME) \
- WCM_OBJECT_OR_WEAK(WeakCell, weak_##NAME, kID_##NAME); \
- \
- Handle<TYPE> NAME() const { \
- return handle(TYPE::cast(weak_##NAME()->value())); \
- }
-
-#define CORE_WCM_PROPERTY_TABLE(MACRO) \
- MACRO(OBJECT, FixedArray, code_table) \
- MACRO(OBJECT, Foreign, module_wrapper) \
- MACRO(OBJECT, SeqOneByteString, module_bytes) \
- MACRO(OBJECT, Script, asm_js_script) \
- MACRO(OBJECT, FixedArray, function_tables) \
- MACRO(OBJECT, FixedArray, empty_function_tables) \
- MACRO(OBJECT, ByteArray, asm_js_offset_tables) \
- MACRO(OBJECT, JSArrayBuffer, memory) \
- MACRO(SMALL_NUMBER, uint32_t, min_mem_pages) \
- MACRO(SMALL_NUMBER, uint32_t, max_mem_pages) \
- MACRO(WEAK_LINK, WasmCompiledModule, next_instance) \
- MACRO(WEAK_LINK, WasmCompiledModule, prev_instance) \
- MACRO(WEAK_LINK, JSObject, owning_instance) \
- MACRO(WEAK_LINK, JSObject, wasm_module)
-
-#if DEBUG
-#define DEBUG_ONLY_TABLE(MACRO) MACRO(SMALL_NUMBER, uint32_t, instance_id)
-#else
-#define DEBUG_ONLY_TABLE(IGNORE)
- uint32_t instance_id() const { return -1; }
-#endif
-
-#define WCM_PROPERTY_TABLE(MACRO) \
- CORE_WCM_PROPERTY_TABLE(MACRO) \
- DEBUG_ONLY_TABLE(MACRO)
-
- private:
- enum PropertyIndices {
-#define INDICES(IGNORE1, IGNORE2, NAME) kID_##NAME,
- WCM_PROPERTY_TABLE(INDICES) Count
-#undef INDICES
- };
-
- public:
- static Handle<WasmCompiledModule> New(
- Isolate* isolate, Handle<Managed<WasmModule>> module_wrapper);
-
- static Handle<WasmCompiledModule> Clone(Isolate* isolate,
- Handle<WasmCompiledModule> module) {
- Handle<WasmCompiledModule> ret = Handle<WasmCompiledModule>::cast(
- isolate->factory()->CopyFixedArray(module));
- ret->InitId();
- ret->reset_weak_owning_instance();
- ret->reset_weak_next_instance();
- ret->reset_weak_prev_instance();
- return ret;
- }
-
- uint32_t mem_size() const {
- return has_memory() ? memory()->byte_length()->Number()
- : default_mem_size();
- }
-
- uint32_t default_mem_size() const {
- return min_mem_pages() * WasmModule::kPageSize;
- }
-
-#define DECLARATION(KIND, TYPE, NAME) WCM_##KIND(TYPE, NAME)
- WCM_PROPERTY_TABLE(DECLARATION)
-#undef DECLARATION
-
- static bool IsWasmCompiledModule(Object* obj);
-
- void PrintInstancesChain();
-
- static void RecreateModuleWrapper(Isolate* isolate,
- Handle<FixedArray> compiled_module);
-
- private:
- void InitId();
-
- DISALLOW_IMPLICIT_CONSTRUCTORS(WasmCompiledModule);
-};
-
// Extract a function name from the given wasm object.
// Returns "<WASM UNNAMED>" if the function is unnamed or the name is not a
// valid UTF-8 string.
@@ -522,21 +403,7 @@ Handle<Script> GetAsmWasmScript(Handle<JSObject> instance);
int GetAsmWasmSourcePosition(Handle<JSObject> instance, int func_index,
int byte_offset);
-// Constructs a single function table as a FixedArray of double size,
-// populating it with function signature indices and function indices.
-Handle<FixedArray> BuildFunctionTable(Isolate* isolate, uint32_t index,
- const WasmModule* module);
-
-// Populates a function table by replacing function indices with handles to
-// the compiled code.
-void PopulateFunctionTable(Handle<FixedArray> table, uint32_t table_size,
- const std::vector<Handle<Code>>* code_table);
-
-Handle<JSObject> CreateWasmModuleObject(
- Isolate* isolate, Handle<WasmCompiledModule> compiled_module,
- ModuleOrigin origin);
-
-V8_EXPORT_PRIVATE MaybeHandle<JSObject> CreateModuleObjectFromBytes(
+V8_EXPORT_PRIVATE MaybeHandle<WasmModuleObject> CreateModuleObjectFromBytes(
Isolate* isolate, const byte* start, const byte* end, ErrorThrower* thrower,
ModuleOrigin origin, Handle<Script> asm_js_script,
const byte* asm_offset_tables_start, const byte* asm_offset_tables_end);
« no previous file with comments | « src/wasm/wasm-js.cc ('k') | src/wasm/wasm-module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698