MCPcopy
hub / github.com/sql-js/sql.js / _memcpy

Function _memcpy

js/sql-debug.js:397752–397822  ·  view source on GitHub ↗
(dest, src, num)

Source from the content-addressed store, hash-verified

397750 return (((x&0xff)<<24) | (((x>>8)&0xff)<<16) | (((x>>16)&0xff)<<8) | (x>>>24))|0;
397751}
397752function _memcpy(dest, src, num) {
397753 dest = dest|0; src = src|0; num = num|0;
397754 var ret = 0;
397755 var aligned_dest_end = 0;
397756 var block_aligned_dest_end = 0;
397757 var dest_end = 0;
397758 // Test against a benchmarked cutoff limit for when HEAPU8.set() becomes faster to use.
397759 if ((num|0) >=
397760 8192
397761 ) {
397762 return _emscripten_memcpy_big(dest|0, src|0, num|0)|0;
397763 }
397764
397765 ret = dest|0;
397766 dest_end = (dest + num)|0;
397767 if ((dest&3) == (src&3)) {
397768 // The initial unaligned < 4-byte front.
397769 while (dest & 3) {
397770 if ((num|0) == 0) return ret|0;
397771 HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
397772 dest = (dest+1)|0;
397773 src = (src+1)|0;
397774 num = (num-1)|0;
397775 }
397776 aligned_dest_end = (dest_end & -4)|0;
397777 block_aligned_dest_end = (aligned_dest_end - 64)|0;
397778 while ((dest|0) <= (block_aligned_dest_end|0) ) {
397779 HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0);
397780 HEAP32[(((dest)+(4))>>2)]=((HEAP32[(((src)+(4))>>2)])|0);
397781 HEAP32[(((dest)+(8))>>2)]=((HEAP32[(((src)+(8))>>2)])|0);
397782 HEAP32[(((dest)+(12))>>2)]=((HEAP32[(((src)+(12))>>2)])|0);
397783 HEAP32[(((dest)+(16))>>2)]=((HEAP32[(((src)+(16))>>2)])|0);
397784 HEAP32[(((dest)+(20))>>2)]=((HEAP32[(((src)+(20))>>2)])|0);
397785 HEAP32[(((dest)+(24))>>2)]=((HEAP32[(((src)+(24))>>2)])|0);
397786 HEAP32[(((dest)+(28))>>2)]=((HEAP32[(((src)+(28))>>2)])|0);
397787 HEAP32[(((dest)+(32))>>2)]=((HEAP32[(((src)+(32))>>2)])|0);
397788 HEAP32[(((dest)+(36))>>2)]=((HEAP32[(((src)+(36))>>2)])|0);
397789 HEAP32[(((dest)+(40))>>2)]=((HEAP32[(((src)+(40))>>2)])|0);
397790 HEAP32[(((dest)+(44))>>2)]=((HEAP32[(((src)+(44))>>2)])|0);
397791 HEAP32[(((dest)+(48))>>2)]=((HEAP32[(((src)+(48))>>2)])|0);
397792 HEAP32[(((dest)+(52))>>2)]=((HEAP32[(((src)+(52))>>2)])|0);
397793 HEAP32[(((dest)+(56))>>2)]=((HEAP32[(((src)+(56))>>2)])|0);
397794 HEAP32[(((dest)+(60))>>2)]=((HEAP32[(((src)+(60))>>2)])|0);
397795 dest = (dest+64)|0;
397796 src = (src+64)|0;
397797 }
397798 while ((dest|0) < (aligned_dest_end|0) ) {
397799 HEAP32[((dest)>>2)]=((HEAP32[((src)>>2)])|0);
397800 dest = (dest+4)|0;
397801 src = (src+4)|0;
397802 }
397803 } else {
397804 // In the unaligned copy case, unroll a bit as well.
397805 aligned_dest_end = (dest_end - 4)|0;
397806 while ((dest|0) < (aligned_dest_end|0) ) {
397807 HEAP8[((dest)>>0)]=((HEAP8[((src)>>0)])|0);
397808 HEAP8[(((dest)+(1))>>0)]=((HEAP8[(((src)+(1))>>0)])|0);
397809 HEAP8[(((dest)+(2))>>0)]=((HEAP8[(((src)+(2))>>0)])|0);

Callers 15

_sqlite3VXPrintfFunction · 0.85
_strAccumFinishReallocFunction · 0.85
_enlargeAndAppendFunction · 0.85
_sqlite3StrAccumEnlargeFunction · 0.85
_unixOpenFunction · 0.85
_unixFullPathnameFunction · 0.85
_replaceFuncFunction · 0.85
_groupConcatStepFunction · 0.85
_sqlite3VdbeMemSetStrFunction · 0.85
_sqlite3VdbeMemGrowFunction · 0.85
_renameParentFuncFunction · 0.85
_dbReallocFinishFunction · 0.85

Calls 1

_emscripten_memcpy_bigFunction · 0.70

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…