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

Quelle  EqualityOperations.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/. */


/*
 * The equality comparisons of js/Equality.h, but with extra efficiency for
 * SpiderMonkey-internal callers.
 *
 * These functions, assuming they're passed C++-valid arguments, are identical
 * to the same-named JS::-namespaced functions -- just with hidden linkage (so
 * they're more efficient to call), and without various external-caller-focused
 * JSAPI-usage assertions performed that SpiderMonkey users never come close to
 * failing.
 */


#ifndef vm_EqualityOperations_h
#define vm_EqualityOperations_h

#include "jstypes.h"        // JS_PUBLIC_API
#include "js/RootingAPI.h"  // JS::Handle
#include "js/Value.h"       // JS::Value

struct JS_PUBLIC_API JSContext;

namespace js {

extern bool ConstantStrictEqual(const JS::Value& val, uint16_t operand);

/** Computes |lval === rval|. */
extern bool StrictlyEqual(JSContext* cx, const JS::Value& lval,
                          const JS::Value& rval, bool* equal);

/** Computes |lval == rval|. */
extern bool LooselyEqual(JSContext* cx, JS::Handle<JS::Value> lval,
                         JS::Handle<JS::Value> rval, bool* equal);

/**
 * Computes |SameValue(v1, v2)| -- strict equality except that NaNs are
 * considered equal and opposite-signed zeroes are considered unequal.
 */

extern bool SameValue(JSContext* cx, const JS::Value& v1, const JS::Value& v2,
                      bool* same);

/**
 * Computes |SameValueZero(v1, v2)| -- strict equality except that NaNs are
 * considered equal. Opposite-signed zeroes are considered equal.
 */

extern bool SameValueZero(JSContext* cx, const JS::Value& v1,
                          const JS::Value& v2, bool* same);

/*
 * Whether strict equality of a JS::Value (with any other JS::Value) can be
 * implemented by comparing the raw bits, Value::asRawBits().
 *
 * Note that this does not include Int32Value, because DoubleValue can store
 * integers too.
 */

inline bool CanUseBitwiseCompareForStrictlyEqual(const JS::Value& v) {
  return v.isObject() || v.isSymbol() || v.isNullOrUndefined() || v.isBoolean();
}

}  // namespace js

#endif  // vm_EqualityOperations_h

Messung V0.5 in Prozent
C=83 H=100 G=91

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-09-30) ¤

*© 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.