• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2018 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #if !V8_ENABLE_WEBASSEMBLY
6 #error This header should only be included if WebAssembly is enabled.
7 #endif  // !V8_ENABLE_WEBASSEMBLY
8 
9 #ifndef V8_WASM_OBJECT_ACCESS_H_
10 #define V8_WASM_OBJECT_ACCESS_H_
11 
12 #include "src/common/globals.h"
13 #include "src/objects/fixed-array.h"
14 #include "src/objects/js-function.h"
15 #include "src/objects/js-objects.h"
16 #include "src/objects/shared-function-info.h"
17 
18 namespace v8 {
19 namespace internal {
20 namespace wasm {
21 
22 class ObjectAccess : public AllStatic {
23  public:
24   // Convert an offset into an object to an offset into a tagged object.
ToTagged(int offset)25   static constexpr int ToTagged(int offset) { return offset - kHeapObjectTag; }
26 
27   // Get the offset into a fixed array for a given {index}.
ElementOffsetInTaggedFixedArray(int index)28   static constexpr int ElementOffsetInTaggedFixedArray(int index) {
29     return ToTagged(FixedArray::OffsetOfElementAt(index));
30   }
31 
32   // Get the offset of the context stored in a {JSFunction} object.
ContextOffsetInTaggedJSFunction()33   static constexpr int ContextOffsetInTaggedJSFunction() {
34     return ToTagged(JSFunction::kContextOffset);
35   }
36 
37   // Get the offset of the shared function info in a {JSFunction} object.
SharedFunctionInfoOffsetInTaggedJSFunction()38   static constexpr int SharedFunctionInfoOffsetInTaggedJSFunction() {
39     return ToTagged(JSFunction::kSharedFunctionInfoOffset);
40   }
41 
42   // Get the offset of the formal parameter count in a {SharedFunctionInfo}
43   // object.
FormalParameterCountOffsetInSharedFunctionInfo()44   static constexpr int FormalParameterCountOffsetInSharedFunctionInfo() {
45     return ToTagged(SharedFunctionInfo::kFormalParameterCountOffset);
46   }
47 
48   // Get the offset of the flags in a {SharedFunctionInfo} object.
FlagsOffsetInSharedFunctionInfo()49   static constexpr int FlagsOffsetInSharedFunctionInfo() {
50     return ToTagged(SharedFunctionInfo::kFlagsOffset);
51   }
52 };
53 
54 }  // namespace wasm
55 }  // namespace internal
56 }  // namespace v8
57 
58 #endif  // V8_WASM_OBJECT_ACCESS_H_
59