| /** |
| * @license |
| * Copyright 2010 The Emscripten Authors |
| * SPDX-License-Identifier: MIT |
| */ |
| |
| //"use strict"; |
| |
| var Compiletime = { |
| isPointerType: isPointerType, |
| isStructType: isStructType, |
| |
| isNumberType: function(type) { |
| return type in Compiletime.INT_TYPES || type in Compiletime.FLOAT_TYPES; |
| }, |
| |
| INT_TYPES: set('i1', 'i8', 'i16', 'i32', 'i64'), |
| FLOAT_TYPES: set('float', 'double'), |
| }; |
| |
| // code used both at compile time and runtime is defined here, then put on |
| // the Runtime object for compile time and support.js for the generated code |
| |
| function getPointerSize() { |
| return MEMORY64 ? 8 : 4; |
| } |
| |
| function getNativeTypeSize(type) { |
| switch (type) { |
| case 'i1': case 'i8': return 1; |
| case 'i16': return 2; |
| case 'i32': return 4; |
| case 'i64': return 8; |
| case 'float': return 4; |
| case 'double': return 8; |
| default: { |
| if (type[type.length-1] === '*') { |
| return getPointerSize(); |
| } else if (type[0] === 'i') { |
| var bits = Number(type.substr(1)); |
| assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); |
| return bits / 8; |
| } else { |
| return 0; |
| } |
| } |
| } |
| } |
| |
| var Runtime = { |
| getNativeTypeSize: getNativeTypeSize, |
| |
| //! TODO(sbc): This function is unused by emscripten but we can't be |
| //! sure there are not external users. |
| //! See: https://github.com/emscripten-core/emscripten/issues/15242 |
| getNativeFieldSize: function(type) { |
| return Math.max(getNativeTypeSize(type), Runtime.QUANTUM_SIZE); |
| }, |
| |
| POINTER_SIZE: getPointerSize(), |
| QUANTUM_SIZE: getPointerSize(), |
| }; |