comparison src/share/vm/c1/c1_InstructionPrinter.cpp @ 1783:d5d065957597

6953144: Tiered compilation Summary: Infrastructure for tiered compilation support (interpreter + c1 + c2) for 32 and 64 bit. Simple tiered policy implementation. Reviewed-by: kvn, never, phh, twisti
author iveresov
date Fri, 03 Sep 2010 17:51:07 -0700
parents c18cbe5936b8
children f02a8bbe6ed4
comparison
equal deleted inserted replaced
1782:f353275af40e 1783:d5d065957597
1 /* 1 /*
2 * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1999, 2010, Oracle and/or its affiliates. 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.
817 void InstructionPrinter::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) { 817 void InstructionPrinter::do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) {
818 print_unsafe_object_op(x, "UnsafePrefetchWrite"); 818 print_unsafe_object_op(x, "UnsafePrefetchWrite");
819 output()->put(')'); 819 output()->put(')');
820 } 820 }
821 821
822
823 void InstructionPrinter::do_ProfileCall(ProfileCall* x) { 822 void InstructionPrinter::do_ProfileCall(ProfileCall* x) {
824 output()->print("profile "); 823 output()->print("profile ");
825 print_value(x->recv()); 824 print_value(x->recv());
826 output()->print(" %s.%s", x->method()->holder()->name()->as_utf8(), x->method()->name()->as_utf8()); 825 output()->print(" %s.%s", x->method()->holder()->name()->as_utf8(), x->method()->name()->as_utf8());
827 if (x->known_holder() != NULL) { 826 if (x->known_holder() != NULL) {
829 print_klass(x->known_holder()); 828 print_klass(x->known_holder());
830 } 829 }
831 output()->put(')'); 830 output()->put(')');
832 } 831 }
833 832
834 833 void InstructionPrinter::do_ProfileInvoke(ProfileInvoke* x) {
835 void InstructionPrinter::do_ProfileCounter(ProfileCounter* x) { 834 output()->print("profile_invoke ");
836 835 output()->print(" %s.%s", x->inlinee()->holder()->name()->as_utf8(), x->inlinee()->name()->as_utf8());
837 ObjectConstant* oc = x->mdo()->type()->as_ObjectConstant(); 836 output()->put(')');
838 if (oc != NULL && oc->value()->is_method() && 837
839 x->offset() == methodOopDesc::interpreter_invocation_counter_offset_in_bytes()) { 838 }
840 print_value(x->mdo());
841 output()->print(".interpreter_invocation_count += %d", x->increment());
842 } else {
843 output()->print("counter [");
844 print_value(x->mdo());
845 output()->print(" + %d] += %d", x->offset(), x->increment());
846 }
847 }
848
849 839
850 #endif // PRODUCT 840 #endif // PRODUCT