Make v8 compile on VS2013.
VS2013 contains a number of improvements, most notably the addition of all C99 math functions. I'm a little bit concerned about the change I had to make in cpu-profiler.cc, but I spent quite a bit of time looking at it and was unable to figure out any rational explanation for the warning. It's possible it's spurious. Since it seems like a useful warning in general though, I chose not to disable globally at the gyp level. I do think someone with expertise here should probably try to determine if this is a legitimate warning. BUG=288948 R=dslomov@chromium.org Review URL: https://codereview.chromium.org/23449035 Patch from Zach Turner <zturner@chromium.org>. git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16775 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
cc17926d6b
commit
9f5edd1bb2
@ -435,8 +435,18 @@ void CpuProfiler::StartProcessorIfNotStarted() {
|
||||
logger->is_logging_ = false;
|
||||
generator_ = new ProfileGenerator(profiles_);
|
||||
Sampler* sampler = logger->sampler();
|
||||
#if V8_CC_MSVC && (_MSC_VER >= 1800)
|
||||
// VS2013 reports "warning C4316: 'v8::internal::ProfilerEventsProcessor'
|
||||
// : object allocated on the heap may not be aligned 64". We need to
|
||||
// figure out if this is a legitimate warning or a compiler bug.
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4316)
|
||||
#endif
|
||||
processor_ = new ProfilerEventsProcessor(
|
||||
generator_, sampler, sampling_interval_);
|
||||
#if V8_CC_MSVC && (_MSC_VER >= 1800)
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
is_profiling_ = true;
|
||||
// Enumerate stuff we already have in the heap.
|
||||
ASSERT(isolate_->heap()->HasBeenSetUp());
|
||||
|
@ -67,6 +67,8 @@ int signbit(double x);
|
||||
|
||||
int strncasecmp(const char* s1, const char* s2, int n);
|
||||
|
||||
// Visual C++ 2013 and higher implement this function.
|
||||
#if (_MSC_VER < 1800)
|
||||
inline int lrint(double flt) {
|
||||
int intgr;
|
||||
#if V8_TARGET_ARCH_IA32
|
||||
@ -84,6 +86,8 @@ inline int lrint(double flt) {
|
||||
return intgr;
|
||||
}
|
||||
|
||||
#endif // _MSC_VER < 1800
|
||||
|
||||
#endif // V8_CC_MSVC
|
||||
|
||||
namespace v8 {
|
||||
|
@ -42,10 +42,10 @@
|
||||
#include "unicode.h"
|
||||
#include "utils.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#if V8_CC_MSVC && (_MSC_VER < 1800)
|
||||
namespace std {
|
||||
|
||||
// Usually defined in math.h, but not in MSVC.
|
||||
// Usually defined in math.h, but not in MSVC until VS2013+.
|
||||
// Abstracted to work
|
||||
int isfinite(double value);
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
// refer to The Open Group Base Specification for specification of the correct
|
||||
// semantics for these functions.
|
||||
// (http://www.opengroup.org/onlinepubs/000095399/)
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_MSC_VER) && (_MSC_VER < 1800)
|
||||
|
||||
#include "win32-headers.h"
|
||||
#include <limits.h> // Required for INT_MAX etc.
|
||||
|
@ -37,6 +37,8 @@
|
||||
#error Wrong environment, expected MSVC.
|
||||
#endif // _MSC_VER
|
||||
|
||||
// MSVC 2013+ provides implementations of all standard math functions.
|
||||
#if (_MSC_VER < 1800)
|
||||
enum {
|
||||
FP_NAN,
|
||||
FP_INFINITE,
|
||||
@ -58,4 +60,6 @@ int signbit(double x);
|
||||
|
||||
} // namespace std
|
||||
|
||||
#endif // _MSC_VER < 1800
|
||||
|
||||
#endif // V8_WIN32_MATH_H_
|
||||
|
Loading…
Reference in New Issue
Block a user