buffer: expose internals on binding
Remove internal object and expose functions directly on binding. This makes possible to simply use internal functions in other builtin modules. PR-URL: https://github.com/iojs/io.js/pull/770 Reviewed-by: Trevor Norris <trev.norris@gmail.com> Reviewed-by: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
parent
8aed9d6610
commit
36a779560a
@ -1,13 +1,12 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
const buffer = process.binding('buffer');
|
const binding = process.binding('buffer');
|
||||||
const smalloc = process.binding('smalloc');
|
const smalloc = process.binding('smalloc');
|
||||||
const util = require('util');
|
const util = require('util');
|
||||||
const alloc = smalloc.alloc;
|
const alloc = smalloc.alloc;
|
||||||
const truncate = smalloc.truncate;
|
const truncate = smalloc.truncate;
|
||||||
const sliceOnto = smalloc.sliceOnto;
|
const sliceOnto = smalloc.sliceOnto;
|
||||||
const kMaxLength = smalloc.kMaxLength;
|
const kMaxLength = smalloc.kMaxLength;
|
||||||
var internal = {};
|
|
||||||
|
|
||||||
exports.Buffer = Buffer;
|
exports.Buffer = Buffer;
|
||||||
exports.SlowBuffer = SlowBuffer;
|
exports.SlowBuffer = SlowBuffer;
|
||||||
@ -124,7 +123,7 @@ NativeBuffer.prototype = Buffer.prototype;
|
|||||||
|
|
||||||
|
|
||||||
// add methods to Buffer prototype
|
// add methods to Buffer prototype
|
||||||
buffer.setupBufferJS(NativeBuffer, internal);
|
binding.setupBufferJS(NativeBuffer);
|
||||||
|
|
||||||
|
|
||||||
// Static methods
|
// Static methods
|
||||||
@ -142,7 +141,7 @@ Buffer.compare = function compare(a, b) {
|
|||||||
if (a === b)
|
if (a === b)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return internal.compare(a, b);
|
return binding.compare(a, b);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -215,7 +214,7 @@ Buffer.byteLength = function(str, enc) {
|
|||||||
ret = str.length >>> 1;
|
ret = str.length >>> 1;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ret = internal.byteLength(str, enc);
|
ret = binding.byteLength(str, enc);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
};
|
};
|
||||||
@ -274,7 +273,7 @@ Buffer.prototype.equals = function equals(b) {
|
|||||||
if (this === b)
|
if (this === b)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return internal.compare(this, b) === 0;
|
return binding.compare(this, b) === 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -298,7 +297,7 @@ Buffer.prototype.compare = function compare(b) {
|
|||||||
if (this === b)
|
if (this === b)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return internal.compare(this, b);
|
return binding.compare(this, b);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -319,7 +318,7 @@ Buffer.prototype.fill = function fill(val, start, end) {
|
|||||||
val = code;
|
val = code;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal.fill(this, val, start, end);
|
binding.fill(this, val, start, end);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
@ -663,7 +662,7 @@ Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
|
|||||||
offset = offset >>> 0;
|
offset = offset >>> 0;
|
||||||
if (!noAssert)
|
if (!noAssert)
|
||||||
checkOffset(offset, 4, this.length);
|
checkOffset(offset, 4, this.length);
|
||||||
return internal.readFloatLE(this, offset);
|
return binding.readFloatLE(this, offset);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -671,7 +670,7 @@ Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
|
|||||||
offset = offset >>> 0;
|
offset = offset >>> 0;
|
||||||
if (!noAssert)
|
if (!noAssert)
|
||||||
checkOffset(offset, 4, this.length);
|
checkOffset(offset, 4, this.length);
|
||||||
return internal.readFloatBE(this, offset);
|
return binding.readFloatBE(this, offset);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -679,7 +678,7 @@ Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
|
|||||||
offset = offset >>> 0;
|
offset = offset >>> 0;
|
||||||
if (!noAssert)
|
if (!noAssert)
|
||||||
checkOffset(offset, 8, this.length);
|
checkOffset(offset, 8, this.length);
|
||||||
return internal.readDoubleLE(this, offset);
|
return binding.readDoubleLE(this, offset);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -687,7 +686,7 @@ Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
|
|||||||
offset = offset >>> 0;
|
offset = offset >>> 0;
|
||||||
if (!noAssert)
|
if (!noAssert)
|
||||||
checkOffset(offset, 8, this.length);
|
checkOffset(offset, 8, this.length);
|
||||||
return internal.readDoubleBE(this, offset);
|
return binding.readDoubleBE(this, offset);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -910,7 +909,7 @@ Buffer.prototype.writeFloatLE = function writeFloatLE(val, offset, noAssert) {
|
|||||||
offset = offset >>> 0;
|
offset = offset >>> 0;
|
||||||
if (!noAssert)
|
if (!noAssert)
|
||||||
checkFloat(this, val, offset, 4);
|
checkFloat(this, val, offset, 4);
|
||||||
internal.writeFloatLE(this, val, offset);
|
binding.writeFloatLE(this, val, offset);
|
||||||
return offset + 4;
|
return offset + 4;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -920,7 +919,7 @@ Buffer.prototype.writeFloatBE = function writeFloatBE(val, offset, noAssert) {
|
|||||||
offset = offset >>> 0;
|
offset = offset >>> 0;
|
||||||
if (!noAssert)
|
if (!noAssert)
|
||||||
checkFloat(this, val, offset, 4);
|
checkFloat(this, val, offset, 4);
|
||||||
internal.writeFloatBE(this, val, offset);
|
binding.writeFloatBE(this, val, offset);
|
||||||
return offset + 4;
|
return offset + 4;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -930,7 +929,7 @@ Buffer.prototype.writeDoubleLE = function writeDoubleLE(val, offset, noAssert) {
|
|||||||
offset = offset >>> 0;
|
offset = offset >>> 0;
|
||||||
if (!noAssert)
|
if (!noAssert)
|
||||||
checkFloat(this, val, offset, 8);
|
checkFloat(this, val, offset, 8);
|
||||||
internal.writeDoubleLE(this, val, offset);
|
binding.writeDoubleLE(this, val, offset);
|
||||||
return offset + 8;
|
return offset + 8;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -940,7 +939,7 @@ Buffer.prototype.writeDoubleBE = function writeDoubleBE(val, offset, noAssert) {
|
|||||||
offset = offset >>> 0;
|
offset = offset >>> 0;
|
||||||
if (!noAssert)
|
if (!noAssert)
|
||||||
checkFloat(this, val, offset, 8);
|
checkFloat(this, val, offset, 8);
|
||||||
internal.writeDoubleBE(this, val, offset);
|
binding.writeDoubleBE(this, val, offset);
|
||||||
return offset + 8;
|
return offset + 8;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -636,25 +636,6 @@ void SetupBufferJS(const FunctionCallbackInfo<Value>& args) {
|
|||||||
proto->ForceSet(env->offset_string(),
|
proto->ForceSet(env->offset_string(),
|
||||||
Uint32::New(env->isolate(), 0),
|
Uint32::New(env->isolate(), 0),
|
||||||
v8::ReadOnly);
|
v8::ReadOnly);
|
||||||
|
|
||||||
CHECK(args[1]->IsObject());
|
|
||||||
|
|
||||||
Local<Object> internal = args[1].As<Object>();
|
|
||||||
ASSERT(internal->IsObject());
|
|
||||||
|
|
||||||
env->SetMethod(internal, "byteLength", ByteLength);
|
|
||||||
env->SetMethod(internal, "compare", Compare);
|
|
||||||
env->SetMethod(internal, "fill", Fill);
|
|
||||||
|
|
||||||
env->SetMethod(internal, "readDoubleBE", ReadDoubleBE);
|
|
||||||
env->SetMethod(internal, "readDoubleLE", ReadDoubleLE);
|
|
||||||
env->SetMethod(internal, "readFloatBE", ReadFloatBE);
|
|
||||||
env->SetMethod(internal, "readFloatLE", ReadFloatLE);
|
|
||||||
|
|
||||||
env->SetMethod(internal, "writeDoubleBE", WriteDoubleBE);
|
|
||||||
env->SetMethod(internal, "writeDoubleLE", WriteDoubleLE);
|
|
||||||
env->SetMethod(internal, "writeFloatBE", WriteFloatBE);
|
|
||||||
env->SetMethod(internal, "writeFloatLE", WriteFloatLE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -662,8 +643,23 @@ void Initialize(Handle<Object> target,
|
|||||||
Handle<Value> unused,
|
Handle<Value> unused,
|
||||||
Handle<Context> context) {
|
Handle<Context> context) {
|
||||||
Environment* env = Environment::GetCurrent(context);
|
Environment* env = Environment::GetCurrent(context);
|
||||||
target->Set(FIXED_ONE_BYTE_STRING(env->isolate(), "setupBufferJS"),
|
|
||||||
env->NewFunctionTemplate(SetupBufferJS)->GetFunction());
|
env->SetMethod(target, "setupBufferJS", SetupBufferJS);
|
||||||
|
|
||||||
|
env->SetMethod(target, "byteLength", ByteLength);
|
||||||
|
env->SetMethod(target, "byteLength", ByteLength);
|
||||||
|
env->SetMethod(target, "compare", Compare);
|
||||||
|
env->SetMethod(target, "fill", Fill);
|
||||||
|
|
||||||
|
env->SetMethod(target, "readDoubleBE", ReadDoubleBE);
|
||||||
|
env->SetMethod(target, "readDoubleLE", ReadDoubleLE);
|
||||||
|
env->SetMethod(target, "readFloatBE", ReadFloatBE);
|
||||||
|
env->SetMethod(target, "readFloatLE", ReadFloatLE);
|
||||||
|
|
||||||
|
env->SetMethod(target, "writeDoubleBE", WriteDoubleBE);
|
||||||
|
env->SetMethod(target, "writeDoubleLE", WriteDoubleLE);
|
||||||
|
env->SetMethod(target, "writeFloatBE", WriteFloatBE);
|
||||||
|
env->SetMethod(target, "writeFloatLE", WriteFloatLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user