src/share/vm/c1/c1_GraphBuilder.hpp

changeset 3100
a32de5085326
parent 2314
f95d63e2154a
child 3498
f067b4e0e04b
     1.1 --- a/src/share/vm/c1/c1_GraphBuilder.hpp	Wed Aug 31 16:46:11 2011 -0700
     1.2 +++ b/src/share/vm/c1/c1_GraphBuilder.hpp	Thu Sep 01 01:31:25 2011 -0700
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -315,9 +315,17 @@
    1.11                                 ValueStack* return_state) { scope_data()->set_inline_cleanup_info(block,
    1.12                                                                                                    return_prev,
    1.13                                                                                                    return_state); }
    1.14 +  void set_inline_cleanup_info() {
    1.15 +    set_inline_cleanup_info(_block, _last, _state);
    1.16 +  }
    1.17    BlockBegin*  inline_cleanup_block() const              { return scope_data()->inline_cleanup_block();  }
    1.18    Instruction* inline_cleanup_return_prev() const        { return scope_data()->inline_cleanup_return_prev(); }
    1.19    ValueStack*  inline_cleanup_state() const              { return scope_data()->inline_cleanup_state();  }
    1.20 +  void restore_inline_cleanup_info() {
    1.21 +    _block = inline_cleanup_block();
    1.22 +    _last  = inline_cleanup_return_prev();
    1.23 +    _state = inline_cleanup_state();
    1.24 +  }
    1.25    void incr_num_returns()                                { scope_data()->incr_num_returns();             }
    1.26    int  num_returns() const                               { return scope_data()->num_returns();           }
    1.27    intx max_inline_size() const                           { return scope_data()->max_inline_size();       }
    1.28 @@ -329,11 +337,15 @@
    1.29    void fill_sync_handler(Value lock, BlockBegin* sync_handler, bool default_handler = false);
    1.30  
    1.31    // inliners
    1.32 -  bool try_inline(ciMethod* callee, bool holder_known);
    1.33 +  bool try_inline(           ciMethod* callee, bool holder_known);
    1.34    bool try_inline_intrinsics(ciMethod* callee);
    1.35 -  bool try_inline_full      (ciMethod* callee, bool holder_known);
    1.36 +  bool try_inline_full(      ciMethod* callee, bool holder_known, BlockBegin* cont_block = NULL);
    1.37    bool try_inline_jsr(int jsr_dest_bci);
    1.38  
    1.39 +  // JSR 292 support
    1.40 +  bool for_method_handle_inline(ciMethod* callee);
    1.41 +  bool for_invokedynamic_inline(ciMethod* callee);
    1.42 +
    1.43    // helpers
    1.44    void inline_bailout(const char* msg);
    1.45    BlockBegin* header_block(BlockBegin* entry, BlockBegin::Flag f, ValueStack* state);

mercurial