// Copyright 2022 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.

@abstract
extern class JSSynchronizationPrimitive extends AlwaysSharedSpaceJSObject {
  waiter_queue_head: ExternalPointer;
  state: uint32;
}

extern class JSAtomicsMutex extends JSSynchronizationPrimitive {
  owner_thread_id: int32;
}

extern class JSAtomicsCondition extends JSSynchronizationPrimitive {
  @if(TAGGED_SIZE_8_BYTES) optional_padding: uint32;
  @ifnot(TAGGED_SIZE_8_BYTES) optional_padding: void;
}