1 /* |
1 /* |
2 * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. |
2 * Copyright 2000-2009 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
2487 need_slow_path = false; |
2487 need_slow_path = false; |
2488 // perform the fast part of the checking logic |
2488 // perform the fast part of the checking logic |
2489 __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, noreg, |
2489 __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, noreg, |
2490 (need_slow_path ? &done : NULL), |
2490 (need_slow_path ? &done : NULL), |
2491 stub->entry(), NULL, |
2491 stub->entry(), NULL, |
2492 RegisterConstant(k->super_check_offset())); |
2492 RegisterOrConstant(k->super_check_offset())); |
2493 } else { |
2493 } else { |
2494 // perform the fast part of the checking logic |
2494 // perform the fast part of the checking logic |
2495 __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, O7, |
2495 __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, Rtmp1, O7, |
2496 &done, stub->entry(), NULL); |
2496 &done, stub->entry(), NULL); |
2497 } |
2497 } |
2548 need_slow_path = false; |
2548 need_slow_path = false; |
2549 // perform the fast part of the checking logic |
2549 // perform the fast part of the checking logic |
2550 __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, O7, noreg, |
2550 __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, O7, noreg, |
2551 (need_slow_path ? &done : NULL), |
2551 (need_slow_path ? &done : NULL), |
2552 (need_slow_path ? &done : NULL), NULL, |
2552 (need_slow_path ? &done : NULL), NULL, |
2553 RegisterConstant(k->super_check_offset()), |
2553 RegisterOrConstant(k->super_check_offset()), |
2554 dst); |
2554 dst); |
2555 } else { |
2555 } else { |
2556 assert(dst != klass_RInfo && dst != k_RInfo, "need 3 registers"); |
2556 assert(dst != klass_RInfo && dst != k_RInfo, "need 3 registers"); |
2557 // perform the fast part of the checking logic |
2557 // perform the fast part of the checking logic |
2558 __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, O7, dst, |
2558 __ check_klass_subtype_fast_path(klass_RInfo, k_RInfo, O7, dst, |
2559 &done, &done, NULL, |
2559 &done, &done, NULL, |
2560 RegisterConstant(-1), |
2560 RegisterOrConstant(-1), |
2561 dst); |
2561 dst); |
2562 } |
2562 } |
2563 if (need_slow_path) { |
2563 if (need_slow_path) { |
2564 // call out-of-line instance of __ check_klass_subtype_slow_path(...): |
2564 // call out-of-line instance of __ check_klass_subtype_slow_path(...): |
2565 assert(klass_RInfo == G3 && k_RInfo == G1, "incorrect call setup"); |
2565 assert(klass_RInfo == G3 && k_RInfo == G1, "incorrect call setup"); |