Force inlining CopyChars and String::Get.
BUG= TEST= Review URL: https://chromiumcodereview.appspot.com/10332054 git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@11527 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
Родитель
2eb181d28c
Коммит
33be3016fb
|
@ -345,6 +345,9 @@ F FUNCTION_CAST(Address addr) {
|
|||
#define INLINE(header) inline __attribute__((always_inline)) header
|
||||
#define NO_INLINE(header) __attribute__((noinline)) header
|
||||
#endif
|
||||
#elif defined(_MSC_VER) && !defined(DEBUG)
|
||||
#define INLINE(header) __forceinline header
|
||||
#define NO_INLINE(header) header
|
||||
#else
|
||||
#define INLINE(header) inline header
|
||||
#define NO_INLINE(header) header
|
||||
|
|
|
@ -6844,7 +6844,7 @@ class String: public HeapObject {
|
|||
inline void Set(int index, uint16_t value);
|
||||
// Get individual two byte char in the string. Repeated calls
|
||||
// to this method are not efficient unless the string is flat.
|
||||
inline uint16_t Get(int index);
|
||||
INLINE(uint16_t Get(int index));
|
||||
|
||||
// Try to flatten the string. Checks first inline to see if it is
|
||||
// necessary. Does nothing if the string is not a cons string.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright 2011 the V8 project authors. All rights reserved.
|
||||
// Copyright 2012 the V8 project authors. All rights reserved.
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
// met:
|
||||
|
@ -199,10 +199,13 @@ Vector<const char> ReadFile(FILE* file,
|
|||
bool verbose = true);
|
||||
|
||||
|
||||
|
||||
// Copy from ASCII/16bit chars to ASCII/16bit chars.
|
||||
template <typename sourcechar, typename sinkchar>
|
||||
inline void CopyChars(sinkchar* dest, const sourcechar* src, int chars) {
|
||||
INLINE(void CopyChars(sinkchar* dest, const sourcechar* src, int chars));
|
||||
|
||||
|
||||
template <typename sourcechar, typename sinkchar>
|
||||
void CopyChars(sinkchar* dest, const sourcechar* src, int chars) {
|
||||
sinkchar* limit = dest + chars;
|
||||
#ifdef V8_HOST_CAN_READ_UNALIGNED
|
||||
if (sizeof(*dest) == sizeof(*src)) {
|
||||
|
|
Загрузка…
Ссылка в новой задаче