| /** |
| * @license |
| * Copyright 2022 The Emscripten Authors |
| * SPDX-License-Identifier: MIT |
| */ |
| |
| var LibraryMemOps = { |
| $setValue__docs: ` |
| /** |
| * @param {number} ptr |
| * @param {number} value |
| * @param {string} type |
| */`, |
| $setValue: function(ptr, value, type = 'i8') { |
| if (type.endsWith('*')) type = '*'; |
| switch (type) { |
| case 'i1': {{{ makeSetValue('ptr', '0', 'value', 'i1') }}}; break; |
| case 'i8': {{{ makeSetValue('ptr', '0', 'value', 'i8') }}}; break; |
| case 'i16': {{{ makeSetValue('ptr', '0', 'value', 'i16') }}}; break; |
| case 'i32': {{{ makeSetValue('ptr', '0', 'value', 'i32') }}}; break; |
| case 'i64': {{{ makeSetValue('ptr', '0', 'value', 'i64') }}}; break; |
| case 'float': {{{ makeSetValue('ptr', '0', 'value', 'float') }}}; break; |
| case 'double': {{{ makeSetValue('ptr', '0', 'value', 'double') }}}; break; |
| case '*': {{{ makeSetValue('ptr', '0', 'value', '*') }}}; break; |
| default: abort('invalid type for setValue: ' + type); |
| } |
| }, |
| |
| $getValue__docs: ` |
| /** |
| * @param {number} ptr |
| * @param {string} type |
| */`, |
| $getValue: function(ptr, type = 'i8') { |
| if (type.endsWith('*')) type = '*'; |
| switch (type) { |
| case 'i1': return {{{ makeGetValue('ptr', '0', 'i1') }}}; |
| case 'i8': return {{{ makeGetValue('ptr', '0', 'i8') }}}; |
| case 'i16': return {{{ makeGetValue('ptr', '0', 'i16') }}}; |
| case 'i32': return {{{ makeGetValue('ptr', '0', 'i32') }}}; |
| case 'i64': return {{{ makeGetValue('ptr', '0', 'i64') }}}; |
| case 'float': return {{{ makeGetValue('ptr', '0', 'float') }}}; |
| case 'double': return {{{ makeGetValue('ptr', '0', 'double') }}}; |
| case '*': return {{{ makeGetValue('ptr', '0', '*') }}}; |
| default: abort('invalid type for getValue: ' + type); |
| } |
| return null; |
| }, |
| |
| #if SAFE_HEAP |
| // Identical to above two functions, but known to the safeHeap pass |
| // in tools/acorn-optimizer.js. The heap accesses here in these two |
| // functions will not get re-written. |
| $setValue_safe__internal: true, |
| $setValue_safe: function(ptr, value, type) { |
| switch (type) { |
| case 'i1': {{{ makeSetValue('ptr', '0', 'value', 'i1') }}}; break; |
| case 'i8': {{{ makeSetValue('ptr', '0', 'value', 'i8') }}}; break; |
| case 'i16': {{{ makeSetValue('ptr', '0', 'value', 'i16') }}}; break; |
| case 'i32': {{{ makeSetValue('ptr', '0', 'value', 'i32') }}}; break; |
| case 'i64': {{{ makeSetValue('ptr', '0', 'value', 'i64') }}}; break; |
| case 'float': {{{ makeSetValue('ptr', '0', 'value', 'float') }}}; break; |
| case 'double': {{{ makeSetValue('ptr', '0', 'value', 'double') }}}; break; |
| default: abort('invalid type for setValue: ' + type); |
| } |
| }, |
| |
| $getValue_safe__internal: true, |
| $getValue_safe: function(ptr, type) { |
| switch (type) { |
| case 'i1': return {{{ makeGetValue('ptr', '0', 'i1') }}}; |
| case 'i8': return {{{ makeGetValue('ptr', '0', 'i8') }}}; |
| case 'i16': return {{{ makeGetValue('ptr', '0', 'i16') }}}; |
| case 'i32': return {{{ makeGetValue('ptr', '0', 'i32') }}}; |
| case 'i64': return {{{ makeGetValue('ptr', '0', 'i64') }}}; |
| case 'float': return {{{ makeGetValue('ptr', '0', 'float') }}}; |
| case 'double': return {{{ makeGetValue('ptr', '0', 'double') }}}; |
| default: abort('invalid type for getValue: ' + type); |
| } |
| }, |
| #endif |
| }; |
| |
| mergeInto(LibraryManager.library, LibraryMemOps); |