mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
TypedArrays: Improve dataview perf without endian param
V8 seems to be particularly slow converting an undefined value to false in BooleanValue. Revert this when we upgrade to V8 3.17, or whenever the fix discussed in http://code.google.com/p/v8/issues/detail?id=2487 lands in V8.
This commit is contained in:
@@ -673,7 +673,10 @@ class DataView {
|
||||
return ThrowError("Wrong number of arguments.");
|
||||
|
||||
unsigned int index = args[0]->Uint32Value();
|
||||
bool little_endian = args[1]->BooleanValue();
|
||||
// NOTE(deanm): args[1]->BooleanValue when the argument was not passed in
|
||||
// gives us the right answer, but seems to be very slow. This seems to be
|
||||
// the cost of calling BooleanValue() on undefined.
|
||||
bool little_endian = args.Length() > 1 ? args[1]->BooleanValue() : false;
|
||||
// TODO(deanm): All of these things should be cacheable.
|
||||
int element_size = v8_typed_array::SizeOfArrayElementForType(
|
||||
args.This()->GetIndexedPropertiesExternalArrayDataType());
|
||||
@@ -708,7 +711,10 @@ class DataView {
|
||||
return ThrowError("Wrong number of arguments.");
|
||||
|
||||
unsigned int index = args[0]->Int32Value();
|
||||
bool little_endian = args[2]->BooleanValue();
|
||||
// NOTE(deanm): args[1]->BooleanValue when the argument was not passed in
|
||||
// gives us the right answer, but seems to be very slow. This seems to be
|
||||
// the cost of calling BooleanValue() on undefined.
|
||||
bool little_endian = args.Length() > 1 ? args[1]->BooleanValue() : false;
|
||||
// TODO(deanm): All of these things should be cacheable.
|
||||
int element_size = v8_typed_array::SizeOfArrayElementForType(
|
||||
args.This()->GetIndexedPropertiesExternalArrayDataType());
|
||||
|
||||
Reference in New Issue
Block a user