OLD | NEW |
1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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 #ifndef V8_WASM_OBJECTS_H_ | 5 #ifndef V8_WASM_OBJECTS_H_ |
6 #define V8_WASM_OBJECTS_H_ | 6 #define V8_WASM_OBJECTS_H_ |
7 | 7 |
8 #include "src/objects-inl.h" | 8 #include "src/objects-inl.h" |
9 #include "src/wasm/managed.h" | 9 #include "src/wasm/managed.h" |
10 | 10 |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 } | 150 } |
151 | 151 |
152 #define WCM_OBJECT_OR_WEAK(TYPE, NAME, ID) \ | 152 #define WCM_OBJECT_OR_WEAK(TYPE, NAME, ID) \ |
153 Handle<TYPE> NAME() const { return handle(ptr_to_##NAME()); } \ | 153 Handle<TYPE> NAME() const { return handle(ptr_to_##NAME()); } \ |
154 \ | 154 \ |
155 MaybeHandle<TYPE> maybe_##NAME() const { \ | 155 MaybeHandle<TYPE> maybe_##NAME() const { \ |
156 if (has_##NAME()) return NAME(); \ | 156 if (has_##NAME()) return NAME(); \ |
157 return MaybeHandle<TYPE>(); \ | 157 return MaybeHandle<TYPE>(); \ |
158 } \ | 158 } \ |
159 \ | 159 \ |
| 160 TYPE* maybe_ptr_to_##NAME() const { \ |
| 161 Object* obj = get(ID); \ |
| 162 if (!obj->Is##TYPE()) return nullptr; \ |
| 163 return TYPE::cast(obj); \ |
| 164 } \ |
| 165 \ |
160 TYPE* ptr_to_##NAME() const { \ | 166 TYPE* ptr_to_##NAME() const { \ |
161 Object* obj = get(ID); \ | 167 Object* obj = get(ID); \ |
162 if (!obj->Is##TYPE()) return nullptr; \ | 168 DCHECK(obj->Is##TYPE()); \ |
163 return TYPE::cast(obj); \ | 169 return TYPE::cast(obj); \ |
164 } \ | 170 } \ |
165 \ | 171 \ |
166 void set_##NAME(Handle<TYPE> value) { set_ptr_to_##NAME(*value); } \ | 172 void set_##NAME(Handle<TYPE> value) { set_ptr_to_##NAME(*value); } \ |
167 \ | 173 \ |
168 void set_ptr_to_##NAME(TYPE* value) { set(ID, value); } \ | 174 void set_ptr_to_##NAME(TYPE* value) { set(ID, value); } \ |
169 \ | 175 \ |
170 bool has_##NAME() const { return get(ID)->Is##TYPE(); } \ | 176 bool has_##NAME() const { return get(ID)->Is##TYPE(); } \ |
171 \ | 177 \ |
172 void reset_##NAME() { set_undefined(ID); } | 178 void reset_##NAME() { set_undefined(ID); } |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
299 int func_index, int byte_offset); | 305 int func_index, int byte_offset); |
300 }; | 306 }; |
301 | 307 |
302 #undef DECLARE_ACCESSORS | 308 #undef DECLARE_ACCESSORS |
303 #undef DECLARE_OPTIONAL_ACCESSORS | 309 #undef DECLARE_OPTIONAL_ACCESSORS |
304 | 310 |
305 } // namespace internal | 311 } // namespace internal |
306 } // namespace v8 | 312 } // namespace v8 |
307 | 313 |
308 #endif // V8_WASM_OBJECTS_H_ | 314 #endif // V8_WASM_OBJECTS_H_ |
OLD | NEW |