Revision: 21519
Author: [email protected]
Date: Tue May 27 12:02:44 2014 UTC
Log: Replace some calls to MemCopy with small constant sizes with
memcpy
MemCopy is only meant for variable size, large (>64bytes) copies,
otherwise, it's probably slower than memcpy due to the call
overhead and the compiler can't optimize it away.
BUG=none
[email protected]
LOG=n
Review URL: https://codereview.chromium.org/306453005
http://code.google.com/p/v8/source/detail?r=21519
Modified:
/branches/bleeding_edge/src/arm/assembler-arm.cc
/branches/bleeding_edge/src/arm/constants-arm.cc
/branches/bleeding_edge/src/arm/simulator-arm.cc
/branches/bleeding_edge/src/atomicops_internals_x86_gcc.cc
/branches/bleeding_edge/src/conversions-inl.h
/branches/bleeding_edge/src/gdb-jit.cc
/branches/bleeding_edge/src/mips/assembler-mips.cc
/branches/bleeding_edge/src/mips/simulator-mips.cc
=======================================
--- /branches/bleeding_edge/src/arm/assembler-arm.cc Tue May 27 07:57:22
2014 UTC
+++ /branches/bleeding_edge/src/arm/assembler-arm.cc Tue May 27 12:02:44
2014 UTC
@@ -2325,7 +2325,7 @@
static void DoubleAsTwoUInt32(double d, uint32_t* lo, uint32_t* hi) {
uint64_t i;
- MemCopy(&i, &d, 8);
+ memcpy(&i, &d, 8);
*lo = i & 0xffffffff;
*hi = i >> 32;
=======================================
--- /branches/bleeding_edge/src/arm/constants-arm.cc Tue May 27 07:57:22
2014 UTC
+++ /branches/bleeding_edge/src/arm/constants-arm.cc Tue May 27 12:02:44
2014 UTC
@@ -28,7 +28,7 @@
uint64_t imm = high16 << 48;
double d;
- MemCopy(&d, &imm, 8);
+ memcpy(&d, &imm, 8);
return d;
}
=======================================
--- /branches/bleeding_edge/src/arm/simulator-arm.cc Tue May 27 07:57:22
2014 UTC
+++ /branches/bleeding_edge/src/arm/simulator-arm.cc Tue May 27 12:02:44
2014 UTC
@@ -699,7 +699,7 @@
cache_page->CachedData(offset),
Instruction::kInstrSize));
} else {
// Cache miss. Load memory into the cache.
- MemCopy(cached_line, line, CachePage::kLineLength);
+ memcpy(cached_line, line, CachePage::kLineLength);
*cache_valid_byte = CachePage::LINE_VALID;
}
}
@@ -894,8 +894,8 @@
// Read the bits from the unsigned integer register_[] array
// into the double precision floating point value and return it.
char buffer[2 * sizeof(vfp_registers_[0])];
- MemCopy(buffer, ®isters_[reg], 2 * sizeof(registers_[0]));
- MemCopy(&dm_val, buffer, 2 * sizeof(registers_[0]));
+ memcpy(buffer, ®isters_[reg], 2 * sizeof(registers_[0]));
+ memcpy(&dm_val, buffer, 2 * sizeof(registers_[0]));
return(dm_val);
}
@@ -999,9 +999,9 @@
if (register_size == 2) ASSERT(reg_index <
DwVfpRegister::NumRegisters());
char buffer[register_size * sizeof(vfp_registers_[0])];
- MemCopy(buffer, &value, register_size * sizeof(vfp_registers_[0]));
- MemCopy(&vfp_registers_[reg_index * register_size], buffer,
- register_size * sizeof(vfp_registers_[0]));
+ memcpy(buffer, &value, register_size * sizeof(vfp_registers_[0]));
+ memcpy(&vfp_registers_[reg_index * register_size], buffer,
+ register_size * sizeof(vfp_registers_[0]));
}
@@ -1013,9 +1013,9 @@
ReturnType value = 0;
char buffer[register_size * sizeof(vfp_registers_[0])];
- MemCopy(buffer, &vfp_registers_[register_size * reg_index],
- register_size * sizeof(vfp_registers_[0]));
- MemCopy(&value, buffer, register_size * sizeof(vfp_registers_[0]));
+ memcpy(buffer, &vfp_registers_[register_size * reg_index],
+ register_size * sizeof(vfp_registers_[0]));
+ memcpy(&value, buffer, register_size * sizeof(vfp_registers_[0]));
return value;
}
@@ -1044,14 +1044,14 @@
void Simulator::SetFpResult(const double& result) {
if (use_eabi_hardfloat()) {
char buffer[2 * sizeof(vfp_registers_[0])];
- MemCopy(buffer, &result, sizeof(buffer));
+ memcpy(buffer, &result, sizeof(buffer));
// Copy result to d0.
- MemCopy(vfp_registers_, buffer, sizeof(buffer));
+ memcpy(vfp_registers_, buffer, sizeof(buffer));
} else {
char buffer[2 * sizeof(registers_[0])];
- MemCopy(buffer, &result, sizeof(buffer));
+ memcpy(buffer, &result, sizeof(buffer));
// Copy result to r0 and r1.
- MemCopy(registers_, buffer, sizeof(buffer));
+ memcpy(registers_, buffer, sizeof(buffer));
}
}
@@ -1635,12 +1635,12 @@
ReadW(reinterpret_cast<int32_t>(address + 1), instr)
};
double d;
- MemCopy(&d, data, 8);
+ memcpy(&d, data, 8);
set_d_register_from_double(reg, d);
} else {
int32_t data[2];
double d = get_double_from_d_register(reg);
- MemCopy(data, &d, 8);
+ memcpy(data, &d, 8);
WriteW(reinterpret_cast<int32_t>(address), data[0], instr);
WriteW(reinterpret_cast<int32_t>(address + 1), data[1], instr);
}
@@ -3020,9 +3020,9 @@
int vd = instr->Bits(19, 16) | (instr->Bit(7) << 4);
double dd_value = get_double_from_d_register(vd);
int32_t data[2];
- MemCopy(data, &dd_value, 8);
+ memcpy(data, &dd_value, 8);
data[instr->Bit(21)] = get_register(instr->RtValue());
- MemCopy(&dd_value, data, 8);
+ memcpy(&dd_value, data, 8);
set_d_register_from_double(vd, dd_value);
} else if ((instr->VLValue() == 0x1) &&
(instr->VCValue() == 0x1) &&
@@ -3031,7 +3031,7 @@
int vn = instr->Bits(19, 16) | (instr->Bit(7) << 4);
double dn_value = get_double_from_d_register(vn);
int32_t data[2];
- MemCopy(data, &dn_value, 8);
+ memcpy(data, &dn_value, 8);
set_register(instr->RtValue(), data[instr->Bit(21)]);
} else if ((instr->VLValue() == 0x1) &&
(instr->VCValue() == 0x0) &&
@@ -3382,13 +3382,13 @@
if (instr->HasL()) {
int32_t data[2];
double d = get_double_from_d_register(vm);
- MemCopy(data, &d, 8);
+ memcpy(data, &d, 8);
set_register(rt, data[0]);
set_register(rn, data[1]);
} else {
int32_t data[] = { get_register(rt), get_register(rn) };
double d;
- MemCopy(&d, data, 8);
+ memcpy(&d, data, 8);
set_d_register_from_double(vm, d);
}
}
@@ -3411,13 +3411,13 @@
ReadW(address + 4, instr)
};
double val;
- MemCopy(&val, data, 8);
+ memcpy(&val, data, 8);
set_d_register_from_double(vd, val);
} else {
// Store double to memory: vstr.
int32_t data[2];
double val = get_double_from_d_register(vd);
- MemCopy(data, &val, 8);
+ memcpy(data, &val, 8);
WriteW(address, data[0], instr);
WriteW(address + 4, data[1], instr);
}
=======================================
--- /branches/bleeding_edge/src/atomicops_internals_x86_gcc.cc Tue May 27
07:57:22 2014 UTC
+++ /branches/bleeding_edge/src/atomicops_internals_x86_gcc.cc Tue May 27
12:02:44 2014 UTC
@@ -8,7 +8,6 @@
#include <string.h>
#include "atomicops.h"
-#include "utils.h"
// This file only makes sense with atomicops_internals_x86_gcc.h -- it
// depends on structs that are defined in that file. If atomicops.h
@@ -62,9 +61,9 @@
// Get vendor string (issue CPUID with eax = 0)
cpuid(eax, ebx, ecx, edx, 0);
char vendor[13];
- v8::internal::MemCopy(vendor, &ebx, 4);
- v8::internal::MemCopy(vendor + 4, &edx, 4);
- v8::internal::MemCopy(vendor + 8, &ecx, 4);
+ memcpy(vendor, &ebx, 4);
+ memcpy(vendor + 4, &edx, 4);
+ memcpy(vendor + 8, &ecx, 4);
vendor[12] = 0;
// get feature flags in ecx/edx, and family/model in eax
=======================================
--- /branches/bleeding_edge/src/conversions-inl.h Tue May 27 07:57:22 2014
UTC
+++ /branches/bleeding_edge/src/conversions-inl.h Tue May 27 12:02:44 2014
UTC
@@ -58,7 +58,7 @@
Address mantissa_ptr = reinterpret_cast<Address>(&x) + kIntSize;
#endif
// Copy least significant 32 bits of mantissa.
- MemCopy(&result, mantissa_ptr, sizeof(result));
+ memcpy(&result, mantissa_ptr, sizeof(result));
return negative ? ~result + 1 : result;
}
// Large number (outside uint32 range), Infinity or NaN.
=======================================
--- /branches/bleeding_edge/src/gdb-jit.cc Tue May 27 07:57:22 2014 UTC
+++ /branches/bleeding_edge/src/gdb-jit.cc Tue May 27 12:02:44 2014 UTC
@@ -658,7 +658,7 @@
#else
#error Unsupported target architecture.
#endif
- MemCopy(header->ident, ident, 16);
+ memcpy(header->ident, ident, 16);
header->type = 1;
#if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X87
header->machine = 3;
=======================================
--- /branches/bleeding_edge/src/mips/assembler-mips.cc Tue May 27 07:57:22
2014 UTC
+++ /branches/bleeding_edge/src/mips/assembler-mips.cc Tue May 27 12:02:44
2014 UTC
@@ -1675,7 +1675,7 @@
void Assembler::DoubleAsTwoUInt32(double d, uint32_t* lo, uint32_t* hi) {
uint64_t i;
- MemCopy(&i, &d, 8);
+ memcpy(&i, &d, 8);
*lo = i & 0xffffffff;
*hi = i >> 32;
=======================================
--- /branches/bleeding_edge/src/mips/simulator-mips.cc Tue May 27 07:57:22
2014 UTC
+++ /branches/bleeding_edge/src/mips/simulator-mips.cc Tue May 27 12:02:44
2014 UTC
@@ -845,7 +845,7 @@
Instruction::kInstrSize));
} else {
// Cache miss. Load memory into the cache.
- MemCopy(cached_line, line, CachePage::kLineLength);
+ memcpy(cached_line, line, CachePage::kLineLength);
*cache_valid_byte = CachePage::LINE_VALID;
}
}
@@ -1047,8 +1047,8 @@
// Read the bits from the unsigned integer register_[] array
// into the double precision floating point value and return it.
char buffer[2 * sizeof(registers_[0])];
- MemCopy(buffer, ®isters_[reg], 2 * sizeof(registers_[0]));
- MemCopy(&dm_val, buffer, 2 * sizeof(registers_[0]));
+ memcpy(buffer, ®isters_[reg], 2 * sizeof(registers_[0]));
+ memcpy(&dm_val, buffer, 2 * sizeof(registers_[0]));
return(dm_val);
}
@@ -1096,14 +1096,14 @@
// Registers a0 and a1 -> x.
reg_buffer[0] = get_register(a0);
reg_buffer[1] = get_register(a1);
- MemCopy(x, buffer, sizeof(buffer));
+ memcpy(x, buffer, sizeof(buffer));
// Registers a2 and a3 -> y.
reg_buffer[0] = get_register(a2);
reg_buffer[1] = get_register(a3);
- MemCopy(y, buffer, sizeof(buffer));
+ memcpy(y, buffer, sizeof(buffer));
// Register 2 -> z.
reg_buffer[0] = get_register(a2);
- MemCopy(z, buffer, sizeof(*z));
+ memcpy(z, buffer, sizeof(*z));
}
}
@@ -1115,7 +1115,7 @@
} else {
char buffer[2 * sizeof(registers_[0])];
int32_t* reg_buffer = reinterpret_cast<int32_t*>(buffer);
- MemCopy(buffer, &result, sizeof(buffer));
+ memcpy(buffer, &result, sizeof(buffer));
// Copy result to v0 and v1.
set_register(v0, reg_buffer[0]);
set_register(v1, reg_buffer[1]);
@@ -2887,9 +2887,9 @@
} else {
int buffer[2];
ASSERT(sizeof(buffer[0]) * 2 == sizeof(d0));
- MemCopy(buffer, &d0, sizeof(d0));
+ memcpy(buffer, &d0, sizeof(d0));
set_dw_register(a0, buffer);
- MemCopy(buffer, &d1, sizeof(d1));
+ memcpy(buffer, &d1, sizeof(d1));
set_dw_register(a2, buffer);
}
CallInternal(entry);
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.