Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/c1/c1_CodeStubs.hpp
          +++ new/src/share/vm/c1/c1_CodeStubs.hpp
   1    1  /*
   2      - * Copyright 1999-2006 Sun Microsystems, Inc.  All Rights Reserved.
        2 + * Copyright 1999-2010 Sun Microsystems, Inc.  All Rights Reserved.
   3    3   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4    4   *
   5    5   * This code is free software; you can redistribute it and/or modify it
   6    6   * under the terms of the GNU General Public License version 2 only, as
   7    7   * published by the Free Software Foundation.
   8    8   *
   9    9   * This code is distributed in the hope that it will be useful, but WITHOUT
  10   10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11   11   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12   12   * version 2 for more details (a copy is included in the LICENSE file that
↓ open down ↓ 395 lines elided ↑ open up ↑
 408  408    virtual CodeEmitInfo* info() const             { return _info; }
 409  409    virtual void visit(LIR_OpVisitState* visitor) {
 410  410      visitor->do_slow_case(_info);
 411  411    }
 412  412  #ifndef PRODUCT
 413  413    virtual void print_name(outputStream* out) const { out->print("PatchingStub"); }
 414  414  #endif // PRODUCT
 415  415  };
 416  416  
 417  417  
      418 +//------------------------------------------------------------------------------
      419 +// DeoptimizeStub
      420 +//
      421 +class DeoptimizeStub : public CodeStub {
      422 +private:
      423 +  CodeEmitInfo* _info;
      424 +
      425 +public:
      426 +  DeoptimizeStub(CodeEmitInfo* info) : _info(new CodeEmitInfo(info)) {}
      427 +
      428 +  virtual void emit_code(LIR_Assembler* e);
      429 +  virtual CodeEmitInfo* info() const           { return _info; }
      430 +  virtual bool is_exception_throw_stub() const { return true; }
      431 +  virtual void visit(LIR_OpVisitState* visitor) {
      432 +    visitor->do_slow_case(_info);
      433 +  }
      434 +#ifndef PRODUCT
      435 +  virtual void print_name(outputStream* out) const { out->print("DeoptimizeStub"); }
      436 +#endif // PRODUCT
      437 +};
      438 +
      439 +
 418  440  class SimpleExceptionStub: public CodeStub {
 419  441   private:
 420  442    LIR_Opr          _obj;
 421  443    Runtime1::StubID _stub;
 422  444    CodeEmitInfo*    _info;
 423  445  
 424  446   public:
 425  447    SimpleExceptionStub(Runtime1::StubID stub, LIR_Opr obj, CodeEmitInfo* info):
 426  448      _obj(obj), _info(info), _stub(stub) {
 427  449    }
↓ open down ↓ 135 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX