aboutsummaryrefslogtreecommitdiff
path: root/src/node_buffer.cc
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2013-01-25 22:03:11 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2013-01-25 22:07:04 +0100
commit00b4b7bb97c84d19c644a4491fe98170ab9675a6 (patch)
tree9760dd16096193e5e2ad796cefa3e495c188d81f /src/node_buffer.cc
parentcbe3941db9ec4f47a336fb36a2b91275c3acc7fa (diff)
downloadandroid-node-v8-00b4b7bb97c84d19c644a4491fe98170ab9675a6.tar.gz
android-node-v8-00b4b7bb97c84d19c644a4491fe98170ab9675a6.tar.bz2
android-node-v8-00b4b7bb97c84d19c644a4491fe98170ab9675a6.zip
buffer: remove minor Buffer::Copy deoptimizations
* Omit ToObject() call. Buffer::Data() and Buffer::Length() know how to deal with Values. * Don't check if the argument is undefined because it realistically never is and undefined->integer coercion achieves the same thing.
Diffstat (limited to 'src/node_buffer.cc')
-rw-r--r--src/node_buffer.cc9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/node_buffer.cc b/src/node_buffer.cc
index 85fa5cfe23..2fa7e89952 100644
--- a/src/node_buffer.cc
+++ b/src/node_buffer.cc
@@ -398,13 +398,12 @@ Handle<Value> Buffer::Copy(const Arguments &args) {
return ThrowTypeError("First arg should be a Buffer");
}
- Local<Object> target = args[0]->ToObject();
+ Local<Value> target = args[0];
char* target_data = Buffer::Data(target);
size_t target_length = Buffer::Length(target);
- size_t target_start = args[1]->IsUndefined() ? 0 : args[1]->Uint32Value();
- size_t source_start = args[2]->IsUndefined() ? 0 : args[2]->Uint32Value();
- size_t source_end = args[3]->IsUndefined() ? source->length_
- : args[3]->Uint32Value();
+ size_t target_start = args[1]->Uint32Value();
+ size_t source_start = args[2]->Uint32Value();
+ size_t source_end = args[3]->Uint32Value();
if (source_end < source_start) {
return ThrowRangeError("sourceEnd < sourceStart");