Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/dom/webgpu/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 2 kB image not shown  

Quelle  PromiseHelpers.h

  Sprache: C
 

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#ifndef GPU_PROMISE_HELPERS_H_
#define GPU_PROMISE_HELPERS_H_

#include "mozilla/dom/Promise.h"

// Promise's `MaybeResolve*` & `MaybeReject*` methods call into the JS runtime
// and might execute handlers attached by user code. The user code can contain
// calls to the WebGPU API potentially causing us to re-enter the same function
// that called one of Promise's methods in the first place. Rather than adapting
// our code to cope with situations like this, it seems beneficial not to have
// to deal with reentrancy when reading and debugging code in general.
//
// We therefore defer promise resolution to prevent reentrancy.
//
// The only exception to this is in functions that create, resolve/reject and
// return the promise. This is ok because there was no opportunity for JS user
// code to attach handlers to the promise. The WebGPU specification also
// requires us to settle the promise before returning it in some cases (ex:
// `Buffer::mapAsync`).

namespace mozilla::webgpu::promise {

void MaybeRejectWithTypeError(RefPtr<dom::Promise>&& promise,
                              nsCString&& aMessage);
void MaybeRejectWithOperationError(RefPtr<dom::Promise>&& promise,
                                   nsCString&& aMessage);
void MaybeRejectWithAbortError(RefPtr<dom::Promise>&& promise,
                               nsCString&& aMessage);
void MaybeRejectWithNotSupportedError(RefPtr<dom::Promise>&& promise,
                                      nsCString&& aMessage);
void MaybeRejectWithInvalidStateError(RefPtr<dom::Promise>&& promise,
                                      nsCString&& aMessage);
void MaybeRejectWithPipelineError(RefPtr<dom::Promise>&& promise,
                                  RefPtr<PipelineError>&& aError);

void MaybeResolveWithUndefined(RefPtr<dom::Promise>&& promise);
void MaybeResolveWithNull(RefPtr<dom::Promise>&& promise);

template <typename T>
void MaybeResolve(RefPtr<dom::Promise>&& promise, RefPtr<T>&& aArg) {
  NS_DispatchToCurrentThread(NewCancelableRunnableMethod<RefPtr<T>>(
      "webgpu::PromiseHelpers::MaybeResolve", std::move(promise),
      &dom::Promise::MaybeResolve<RefPtr<T>>, std::move(aArg)));
}

}  // namespace mozilla::webgpu::promise

#endif  // GPU_PROMISE_HELPERS_H_

Messung V0.5 in Prozent
C=78 H=100 G=89

¤ Dauer der Verarbeitung: 0.20 Sekunden  (vorverarbeitet am  2026-08-25) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.