1 /*
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
3 * Copyright 2012, 2014 SAP AG. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
409 // unbox result if not null
410 __ cmpdi(CCR0, R3_RET, 0);
411 __ beq(CCR0, done);
412 __ ld(R3_RET, 0, R3_RET);
413 __ verify_oop(R3_RET);
414 break;
415 case T_FLOAT:
416 break;
417 case T_DOUBLE:
418 break;
419 case T_VOID:
420 break;
421 default: ShouldNotReachHere();
422 }
423
424 __ BIND(done);
425 __ blr();
426
427 return entry;
428 }
429
430
431 // Call an accessor method (assuming it is resolved, otherwise drop into
432 // vanilla (slow path) entry.
433 address InterpreterGenerator::generate_jump_to_normal_entry(void) {
434 address entry = __ pc();
435 address normal_entry = Interpreter::entry_for_kind(Interpreter::zerolocals);
436 assert(normal_entry != NULL, "should already be generated.");
437 __ branch_to_entry(normal_entry, R11_scratch1);
438 __ flush();
439
440 return entry;
441 }
442
443 // Abstract method entry.
444 //
445 address InterpreterGenerator::generate_abstract_entry(void) {
446 address entry = __ pc();
447
448 //
449 // Registers alive
|
1 /*
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
3 * Copyright 2012, 2015 SAP AG. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
23 *
409 // unbox result if not null
410 __ cmpdi(CCR0, R3_RET, 0);
411 __ beq(CCR0, done);
412 __ ld(R3_RET, 0, R3_RET);
413 __ verify_oop(R3_RET);
414 break;
415 case T_FLOAT:
416 break;
417 case T_DOUBLE:
418 break;
419 case T_VOID:
420 break;
421 default: ShouldNotReachHere();
422 }
423
424 __ BIND(done);
425 __ blr();
426
427 return entry;
428 }
429
430 // Call an accessor method (assuming it is resolved, otherwise drop into
431 // vanilla (slow path) entry.
432 address InterpreterGenerator::generate_jump_to_normal_entry(void) {
433 address entry = __ pc();
434 address normal_entry = Interpreter::entry_for_kind(Interpreter::zerolocals);
435 assert(normal_entry != NULL, "should already be generated.");
436 __ branch_to_entry(normal_entry, R11_scratch1);
437 __ flush();
438
439 return entry;
440 }
441
442 // Abstract method entry.
443 //
444 address InterpreterGenerator::generate_abstract_entry(void) {
445 address entry = __ pc();
446
447 //
448 // Registers alive
|