Index: src/x64/simulator-x64.h |
=================================================================== |
--- src/x64/simulator-x64.h (revision 2982) |
+++ src/x64/simulator-x64.h (working copy) |
@@ -28,6 +28,7 @@ |
#ifndef V8_X64_SIMULATOR_X64_H_ |
#define V8_X64_SIMULATOR_X64_H_ |
+#include "allocation.h" |
// Since there is no simulator for the ia32 architecture the only thing we can |
// do is to call the entry directly. |
@@ -35,15 +36,15 @@ |
#define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \ |
entry(p0, p1, p2, p3, p4); |
-// Calculated the stack limit beyond which we will throw stack overflow errors. |
-// This macro must be called from a C++ method. It relies on being able to take |
-// the address of "this" to get a value on the current execution stack and then |
-// calculates the stack limit based on that value. |
-// NOTE: The check for overflow is not safe as there is no guarantee that the |
-// running thread has its stack in all memory up to address 0x00000000. |
-#define GENERATED_CODE_STACK_LIMIT(limit) \ |
- (reinterpret_cast<uintptr_t>(this) >= limit ? \ |
- reinterpret_cast<uintptr_t>(this) - limit : 0) |
+// The stack limit beyond which we will throw stack overflow errors in |
+// generated code. Because generated code on x64 uses the C stack, we |
+// just use the C stack limit. |
+class SimulatorStack : public v8::internal::AllStatic { |
+ public: |
+ static inline uintptr_t JsLimitFromCLimit(uintptr_t c_limit) { |
+ return c_limit; |
+ } |
+}; |
// Call the generated regexp code directly. The entry function pointer should |
// expect seven int/pointer sized arguments and return an int. |