Skip to content

Commit 090a697

Browse files
authored
fix: migrate slow buffer calls when possible (#499)
See also #463.
1 parent 778f8da commit 090a697

File tree

3 files changed

+14
-5
lines changed

3 files changed

+14
-5
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ on:
88
pull_request:
99
branches:
1010
- master
11+
- v5.x
1112
paths-ignore:
1213
- '**.md'
1314
jobs:

lib/types.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@
1515
*/
1616

1717
var utils = require('./utils'),
18-
buffer = require('buffer'), // For `SlowBuffer`.
18+
buffer = require('buffer'),
1919
util = require('util');
2020

2121
var Buffer = buffer.Buffer;
22-
var SlowBuffer = buffer.SlowBuffer;
2322

2423
// Convenience imports.
2524
var Tap = utils.Tap;
@@ -48,7 +47,7 @@ var TYPES = {
4847
var RANDOM = new utils.Lcg();
4948

5049
// Encoding tap (shared for performance).
51-
var TAP = new Tap(new SlowBuffer(1024));
50+
var TAP = new Tap(utils.newSlowBuffer(1024));
5251

5352
// Currently active logical type, used for name redirection.
5453
var LOGICAL_TYPE = null;
@@ -453,7 +452,7 @@ Type.isType = function (/* any, [prefix] ... */) {
453452

454453
Type.__reset = function (size) {
455454
debug('resetting type buffer to %d', size);
456-
TAP.buf = new SlowBuffer(size);
455+
TAP.buf = utils.newSlowBuffer(size);
457456
};
458457

459458
Object.defineProperty(Type.prototype, 'branchName', {

lib/utils.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ var buffer = require('buffer');
1111
var crypto = require('crypto');
1212
var util = require('util');
1313

14-
var Buffer = buffer.Buffer;
14+
var Buffer = buffer.Buffer;
1515

1616
// Shared buffer pool for all taps.
1717
var POOL = new BufferPool(4096);
@@ -35,6 +35,14 @@ function newBuffer(size) {
3535
}
3636
}
3737

38+
function newSlowBuffer(size) {
39+
if (typeof Buffer.allocUnsafeSlow == 'function') {
40+
return Buffer.allocUnsafeSlow(size);
41+
} else {
42+
return new buffer.SlowBuffer(size);
43+
}
44+
}
45+
3846
/**
3947
* Create a new buffer with the input contents.
4048
*
@@ -952,6 +960,7 @@ module.exports = {
952960
isValidName: isValidName,
953961
jsonEnd: jsonEnd,
954962
newBuffer: newBuffer,
963+
newSlowBuffer: newSlowBuffer,
955964
objectValues: objectValues,
956965
qualify: qualify,
957966
toMap: toMap,

0 commit comments

Comments
 (0)