| /** |
| * @license |
| * Copyright 2010 The Emscripten Authors |
| * SPDX-License-Identifier: MIT |
| */ |
| |
| // "use strict"; |
| |
| // 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 |
| |
| global.POINTER_SIZE = MEMORY64 ? 8 : 4; |
| global.STACK_ALIGN = 16; |
| |
| 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 POINTER_SIZE; |
| } else if (type[0] === 'i') { |
| const bits = Number(type.substr(1)); |
| assert(bits % 8 === 0, 'getNativeTypeSize invalid bits ' + bits + ', type ' + type); |
| return bits / 8; |
| } else { |
| return 0; |
| } |
| } |
| } |
| } |
| |
| global.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: POINTER_SIZE, |
| QUANTUM_SIZE: POINTER_SIZE, |
| }; |