// a3: argc
// s0: argv, i.e. points to first arg
Label loop, entry;
- // TODO(plind): At least on simulator, argc in a3 is an int32_t with junk
- // in upper bits. Should fix the root cause, rather than use below
- // workaround to clear upper bits.
- __ dsll32(a3, a3, 0); // int32_t -> int64_t.
- __ dsrl32(a3, a3, 0);
__ dsll(a4, a3, kPointerSizeLog2);
__ daddu(a6, s0, a4);
__ b(&entry);
// 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, p0, p1, p2, p3, p4))
+#define CALL_GENERATED_CODE(entry, p0, p1, p2, p3, p4) \
+ reinterpret_cast<Object*>(Simulator::current(Isolate::Current())->Call( \
+ FUNCTION_ADDR(entry), 5, reinterpret_cast<int64_t*>(p0), \
+ reinterpret_cast<int64_t*>(p1), reinterpret_cast<int64_t*>(p2), \
+ reinterpret_cast<int64_t*>(p3), reinterpret_cast<int64_t*>(p4)))
+
#ifdef MIPS_ABI_N64
#define CALL_GENERATED_REGEXP_CODE(entry, p0, p1, p2, p3, p4, p5, p6, p7, p8) \