| Index: src/ia32/lithium-codegen-ia32.cc
|
| diff --git a/src/ia32/lithium-codegen-ia32.cc b/src/ia32/lithium-codegen-ia32.cc
|
| index 033667b1c72b00be64c24b1ba205faec36b2df95..37c96b75e29fe8d8d589b2d868c280a136f57e42 100644
|
| --- a/src/ia32/lithium-codegen-ia32.cc
|
| +++ b/src/ia32/lithium-codegen-ia32.cc
|
| @@ -139,6 +139,18 @@ bool LCodeGen::GeneratePrologue() {
|
| __ j(not_zero, &loop);
|
| } else {
|
| __ sub(Operand(esp), Immediate(slots * kPointerSize));
|
| +#ifdef _MSC_VER
|
| + // On windows, you may not access the stack more than one page below
|
| + // the most recently mapped page. To make the allocated area randomly
|
| + // accessible, we write to each page in turn (the value is irrelevant).
|
| + const int kPageSize = 4 * KB;
|
| + for (int offset = slots * kPointerSize - kPageSize;
|
| + offset > 0;
|
| + offset -= kPageSize) {
|
| + __ mov(Operand(esp, offset), eax);
|
| + }
|
| +#endif
|
| +
|
| }
|
| }
|
|
|
|
|