| // Copyright 2019 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef V8_COMPILER_WRITE_BARRIER_KIND_H_ |
| #define V8_COMPILER_WRITE_BARRIER_KIND_H_ |
| |
| #include <ostream> |
| |
| #include "src/base/logging.h" |
| |
| namespace v8 { |
| namespace internal { |
| namespace compiler { |
| |
| // Write barrier kinds supported by compiler. |
| enum WriteBarrierKind : uint8_t { |
| kNoWriteBarrier, |
| kAssertNoWriteBarrier, |
| kMapWriteBarrier, |
| kPointerWriteBarrier, |
| kEphemeronKeyWriteBarrier, |
| kFullWriteBarrier |
| }; |
| |
| inline size_t hash_value(WriteBarrierKind kind) { |
| return static_cast<uint8_t>(kind); |
| } |
| |
| inline std::ostream& operator<<(std::ostream& os, WriteBarrierKind kind) { |
| switch (kind) { |
| case kNoWriteBarrier: |
| return os << "NoWriteBarrier"; |
| case kAssertNoWriteBarrier: |
| return os << "AssertNoWriteBarrier"; |
| case kMapWriteBarrier: |
| return os << "MapWriteBarrier"; |
| case kPointerWriteBarrier: |
| return os << "PointerWriteBarrier"; |
| case kEphemeronKeyWriteBarrier: |
| return os << "EphemeronKeyWriteBarrier"; |
| case kFullWriteBarrier: |
| return os << "FullWriteBarrier"; |
| } |
| UNREACHABLE(); |
| } |
| |
| } // namespace compiler |
| } // namespace internal |
| } // namespace v8 |
| |
| #endif // V8_COMPILER_WRITE_BARRIER_KIND_H_ |