diff options
Diffstat (limited to 'deps/v8/src/ppc/simulator-ppc.h')
-rw-r--r-- | deps/v8/src/ppc/simulator-ppc.h | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/deps/v8/src/ppc/simulator-ppc.h b/deps/v8/src/ppc/simulator-ppc.h index bdf50ba474..a3b03dc506 100644 --- a/deps/v8/src/ppc/simulator-ppc.h +++ b/deps/v8/src/ppc/simulator-ppc.h @@ -22,7 +22,7 @@ namespace v8 { namespace internal { // When running without a simulator we call the entry directly. -#define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \ +#define CALL_GENERATED_CODE(isolate, entry, p0, p1, p2, p3, p4) \ (entry(p0, p1, p2, p3, p4)) typedef int (*ppc_regexp_matcher)(String*, int, const byte*, const byte*, int*, @@ -33,8 +33,9 @@ typedef int (*ppc_regexp_matcher)(String*, int, const byte*, const byte*, int*, // should act as a function matching the type ppc_regexp_matcher. // The ninth argument is a dummy that reserves the space used for // the return address added by the ExitFrame in native calls. -#define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6, p7, p8) \ - (FUNCTION_CAST<ppc_regexp_matcher>(entry)(p0, p1, p2, p3, p4, p5, p6, p7, \ +#define CALL_GENERATED_REGEXP_CODE(isolate, entry, p0, p1, p2, p3, p4, p5, p6, \ + p7, p8) \ + (FUNCTION_CAST<ppc_regexp_matcher>(entry)(p0, p1, p2, p3, p4, p5, p6, p7, \ NULL, p8)) // The stack limit beyond which we will throw stack overflow errors in @@ -48,11 +49,15 @@ class SimulatorStack : public v8::internal::AllStatic { return c_limit; } - static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) { + static inline uintptr_t RegisterCTryCatch(v8::internal::Isolate* isolate, + uintptr_t try_catch_address) { + USE(isolate); return try_catch_address; } - static inline void UnregisterCTryCatch() {} + static inline void UnregisterCTryCatch(v8::internal::Isolate* isolate) { + USE(isolate); + } }; } // namespace internal } // namespace v8 @@ -318,6 +323,9 @@ class Simulator { #endif void ExecuteGeneric(Instruction* instr); + void SetFPSCR(int bit) { fp_condition_reg_ |= (1 << (31 - bit)); } + void ClearFPSCR(int bit) { fp_condition_reg_ &= ~(1 << (31 - bit)); } + // Executes one instruction. void ExecuteInstruction(Instruction* instr); @@ -329,7 +337,8 @@ class Simulator { // Runtime call support. static void* RedirectExternalReference( - void* external_function, v8::internal::ExternalReference::Type type); + Isolate* isolate, void* external_function, + v8::internal::ExternalReference::Type type); // Handle arguments and return value for runtime FP functions. void GetFpArgs(double* x, double* y, intptr_t* z); @@ -391,16 +400,17 @@ class Simulator { // When running with the simulator transition into simulated execution at this // point. -#define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \ - reinterpret_cast<Object*>(Simulator::current(Isolate::Current())->Call( \ - FUNCTION_ADDR(entry), 5, (intptr_t)p0, (intptr_t)p1, (intptr_t)p2, \ +#define CALL_GENERATED_CODE(isolate, entry, p0, p1, p2, p3, p4) \ + reinterpret_cast<Object*>(Simulator::current(isolate)->Call( \ + FUNCTION_ADDR(entry), 5, (intptr_t)p0, (intptr_t)p1, (intptr_t)p2, \ (intptr_t)p3, (intptr_t)p4)) -#define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6, p7, p8) \ - Simulator::current(Isolate::Current()) \ - ->Call(entry, 10, (intptr_t)p0, (intptr_t)p1, (intptr_t)p2, \ - (intptr_t)p3, (intptr_t)p4, (intptr_t)p5, (intptr_t)p6, \ - (intptr_t)p7, (intptr_t)NULL, (intptr_t)p8) +#define CALL_GENERATED_REGEXP_CODE(isolate, entry, p0, p1, p2, p3, p4, p5, p6, \ + p7, p8) \ + Simulator::current(isolate)->Call(entry, 10, (intptr_t)p0, (intptr_t)p1, \ + (intptr_t)p2, (intptr_t)p3, (intptr_t)p4, \ + (intptr_t)p5, (intptr_t)p6, (intptr_t)p7, \ + (intptr_t)NULL, (intptr_t)p8) // The simulator has its own stack. Thus it has a different stack limit from @@ -414,13 +424,14 @@ class SimulatorStack : public v8::internal::AllStatic { return Simulator::current(isolate)->StackLimit(c_limit); } - static inline uintptr_t RegisterCTryCatch(uintptr_t try_catch_address) { - Simulator* sim = Simulator::current(Isolate::Current()); + static inline uintptr_t RegisterCTryCatch(v8::internal::Isolate* isolate, + uintptr_t try_catch_address) { + Simulator* sim = Simulator::current(isolate); return sim->PushAddress(try_catch_address); } - static inline void UnregisterCTryCatch() { - Simulator::current(Isolate::Current())->PopAddress(); + static inline void UnregisterCTryCatch(v8::internal::Isolate* isolate) { + Simulator::current(isolate)->PopAddress(); } }; } // namespace internal |