Mercurial > hg > truffle
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 |