src/cpu/sparc/vm/methodHandles_sparc.cpp

changeset 1919
61b2245abf36
parent 1862
cd5dbf694d45
child 1934
e9ff18c4ace7
equal deleted inserted replaced
1918:1a5913bf5e19 1919:61b2245abf36
373 373
374 // Push arguments as if coming from the interpreter. 374 // Push arguments as if coming from the interpreter.
375 Register O0_scratch = O0_argslot; 375 Register O0_scratch = O0_argslot;
376 int stackElementSize = Interpreter::stackElementSize; 376 int stackElementSize = Interpreter::stackElementSize;
377 377
378 // Make space on the stack for the arguments. 378 // Make space on the stack for the arguments and set Gargs
379 __ sub(SP, 4*stackElementSize, SP); 379 // correctly.
380 __ sub(Gargs, 3*stackElementSize, Gargs); 380 __ sub(SP, 4*stackElementSize, SP); // Keep stack aligned.
381 //__ sub(Lesp, 3*stackElementSize, Lesp); 381 __ add(SP, (frame::varargs_offset)*wordSize - 1*Interpreter::stackElementSize + STACK_BIAS + BytesPerWord, Gargs);
382 382
383 // void raiseException(int code, Object actual, Object required) 383 // void raiseException(int code, Object actual, Object required)
384 __ st( O1_scratch, Address(Gargs, 2*stackElementSize)); // code 384 __ st( O1_scratch, Address(Gargs, 2*stackElementSize)); // code
385 __ st_ptr(O2_scratch, Address(Gargs, 1*stackElementSize)); // actual 385 __ st_ptr(O2_scratch, Address(Gargs, 1*stackElementSize)); // actual
386 __ st_ptr(O3_scratch, Address(Gargs, 0*stackElementSize)); // required 386 __ st_ptr(O3_scratch, Address(Gargs, 0*stackElementSize)); // required

mercurial