352 Register last_java_sp,
353 // the entry point
354 address entry_point,
355 // flag which indicates if exception should be checked
356 bool check_exception = true
357 );
358
359 // Support for VM calls. This is the base routine called by the
360 // different versions of call_VM_leaf. The interpreter may customize
361 // this version by overriding it for its purposes (e.g., to
362 // save/restore additional registers when doing a VM call).
363 void call_VM_leaf_base(address entry_point);
364
365 public:
366 // Call into the VM.
367 // Passes the thread pointer (in R3_ARG1) as a prepended argument.
368 // Makes sure oop return values are visible to the GC.
369 void call_VM(Register oop_result, address entry_point, bool check_exceptions = true);
370 void call_VM(Register oop_result, address entry_point, Register arg_1, bool check_exceptions = true);
371 void call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, bool check_exceptions = true);
372 void call_VM_leaf(address entry_point);
373 void call_VM_leaf(address entry_point, Register arg_1);
374 void call_VM_leaf(address entry_point, Register arg_1, Register arg_2);
375 void call_VM_leaf(address entry_point, Register arg_1, Register arg_2, Register arg_3);
376
377 // Call a stub function via a function descriptor, but don't save
378 // TOC before call, don't setup TOC and ENV for call, and don't
379 // restore TOC after call. Updates and returns _last_calls_return_pc.
380 inline address call_stub(Register function_entry);
381 inline void call_stub_and_return_to(Register function_entry, Register return_pc);
382
383 //
384 // Java utilities
385 //
386
387 // Read from the polling page, its address is already in a register.
388 inline void load_from_polling_page(Register polling_page_address, int offset = 0);
389 // Check whether instruction is a read access to the polling page
390 // which was emitted by load_from_polling_page(..).
391 static bool is_load_from_polling_page(int instruction, void* ucontext/*may be NULL*/,
|
352 Register last_java_sp,
353 // the entry point
354 address entry_point,
355 // flag which indicates if exception should be checked
356 bool check_exception = true
357 );
358
359 // Support for VM calls. This is the base routine called by the
360 // different versions of call_VM_leaf. The interpreter may customize
361 // this version by overriding it for its purposes (e.g., to
362 // save/restore additional registers when doing a VM call).
363 void call_VM_leaf_base(address entry_point);
364
365 public:
366 // Call into the VM.
367 // Passes the thread pointer (in R3_ARG1) as a prepended argument.
368 // Makes sure oop return values are visible to the GC.
369 void call_VM(Register oop_result, address entry_point, bool check_exceptions = true);
370 void call_VM(Register oop_result, address entry_point, Register arg_1, bool check_exceptions = true);
371 void call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, bool check_exceptions = true);
372 void call_VM(Register oop_result, address entry_point, Register arg_1, Register arg_2, Register arg3, bool check_exceptions = true);
373 void call_VM_leaf(address entry_point);
374 void call_VM_leaf(address entry_point, Register arg_1);
375 void call_VM_leaf(address entry_point, Register arg_1, Register arg_2);
376 void call_VM_leaf(address entry_point, Register arg_1, Register arg_2, Register arg_3);
377
378 // Call a stub function via a function descriptor, but don't save
379 // TOC before call, don't setup TOC and ENV for call, and don't
380 // restore TOC after call. Updates and returns _last_calls_return_pc.
381 inline address call_stub(Register function_entry);
382 inline void call_stub_and_return_to(Register function_entry, Register return_pc);
383
384 //
385 // Java utilities
386 //
387
388 // Read from the polling page, its address is already in a register.
389 inline void load_from_polling_page(Register polling_page_address, int offset = 0);
390 // Check whether instruction is a read access to the polling page
391 // which was emitted by load_from_polling_page(..).
392 static bool is_load_from_polling_page(int instruction, void* ucontext/*may be NULL*/,
|