// Copyright (c) 2020, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

// @dart = 2.9

import 'dart:typed_data';

@pragma('vm:never-inline')
double getDoubleWithHeapObjectTag() {
  final bd = ByteData(8);
  bd.setUint64(0, 0x8000000180000001, Endian.host);
  final double v = bd.getFloat64(0, Endian.host);
  return v;
}

// Make an integer that would look like an object pointer (irrespective of
// we compile to 32-bit or 64-bit and whether we use little or big endian
// encoding of the integer).
int get integerFieldValue =>
    int.parse('1') == 1 ? constIntegerFieldValue : 0x8000900180009001;
const int constIntegerFieldValue = 0x8000000180000001;
