From 33be3016fb145d697187c14acf79485f408af5cb Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Tue, 8 May 2012 12:38:24 +0000 Subject: [PATCH] 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 --- deps/v8/src/globals.h | 3 +++ deps/v8/src/objects.h | 2 +- deps/v8/src/v8utils.h | 9 ++++++--- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/deps/v8/src/globals.h b/deps/v8/src/globals.h index 25d4ffe89b..97b033f848 100644 --- a/deps/v8/src/globals.h +++ b/deps/v8/src/globals.h @@ -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 diff --git a/deps/v8/src/objects.h b/deps/v8/src/objects.h index ccd07ff1d7..8c0295e8dc 100644 --- a/deps/v8/src/objects.h +++ b/deps/v8/src/objects.h @@ -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. diff --git a/deps/v8/src/v8utils.h b/deps/v8/src/v8utils.h index c73222a29b..bb587e1733 100644 --- a/deps/v8/src/v8utils.h +++ b/deps/v8/src/v8utils.h @@ -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 ReadFile(FILE* file, bool verbose = true); - // Copy from ASCII/16bit chars to ASCII/16bit chars. template -inline void CopyChars(sinkchar* dest, const sourcechar* src, int chars) { +INLINE(void CopyChars(sinkchar* dest, const sourcechar* src, int chars)); + + +template +void CopyChars(sinkchar* dest, const sourcechar* src, int chars) { sinkchar* limit = dest + chars; #ifdef V8_HOST_CAN_READ_UNALIGNED if (sizeof(*dest) == sizeof(*src)) {