| Index: test/cctest/test-log-stack-tracer.cc
|
| diff --git a/test/cctest/test-log-stack-tracer.cc b/test/cctest/test-log-stack-tracer.cc
|
| index 43df6ba7a309022ff75ea2a5d113a2453d808014..20f6f224d58df223f0ab9e01b49e72d046662c37 100644
|
| --- a/test/cctest/test-log-stack-tracer.cc
|
| +++ b/test/cctest/test-log-stack-tracer.cc
|
| @@ -329,17 +329,16 @@ TEST(PureJSStackTrace) {
|
| }
|
|
|
|
|
| -static void CFuncDoTrace() {
|
| +static void CFuncDoTrace(byte dummy_parameter) {
|
| Address fp;
|
| #ifdef __GNUC__
|
| fp = reinterpret_cast<Address>(__builtin_frame_address(0));
|
| -#elif defined _MSC_VER && defined V8_TARGET_ARCH_IA32
|
| - __asm mov [fp], ebp // NOLINT
|
| -#elif defined _MSC_VER && defined V8_TARGET_ARCH_X64
|
| - // TODO(X64): __asm extension is not supported by the Microsoft Visual C++
|
| - // 64-bit compiler.
|
| - fp = 0;
|
| - UNIMPLEMENTED();
|
| +#elif defined _MSC_VER
|
| + // Approximate a frame pointer address. We compile without base pointers,
|
| + // so we can't trust ebp/rbp.
|
| + fp = &dummy_parameter - 2 * sizeof(void*);
|
| +#else
|
| +#error Unexpected platform.
|
| #endif
|
| DoTrace(fp);
|
| }
|
| @@ -347,7 +346,7 @@ static void CFuncDoTrace() {
|
|
|
| static int CFunc(int depth) {
|
| if (depth <= 0) {
|
| - CFuncDoTrace();
|
| + CFuncDoTrace(0);
|
| return 0;
|
| } else {
|
| return CFunc(depth - 1) + 1;
|
|
|