Print this page
rev 2161 : [mq]: initial-intrinsification-changes
rev 2163 : [mq]: client_assertion_fauilure

Split Close
Expand all
Collapse all
          --- old/src/cpu/zero/vm/cppInterpreter_zero.cpp
          +++ new/src/cpu/zero/vm/cppInterpreter_zero.cpp
   1    1  /*
   2      - * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
        2 + * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
   3    3   * Copyright 2007, 2008, 2009, 2010 Red Hat, Inc.
   4    4   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   5    5   *
   6    6   * This code is free software; you can redistribute it and/or modify it
   7    7   * under the terms of the GNU General Public License version 2 only, as
   8    8   * published by the Free Software Foundation.
   9    9   *
  10   10   * This code is distributed in the hope that it will be useful, but WITHOUT
  11   11   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12   12   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
↓ open down ↓ 717 lines elided ↑ open up ↑
 730  730    return generate_entry((address) CppInterpreter::empty_entry);
 731  731  }
 732  732  
 733  733  address InterpreterGenerator::generate_accessor_entry() {
 734  734    if (!UseFastAccessorMethods)
 735  735      return NULL;
 736  736  
 737  737    return generate_entry((address) CppInterpreter::accessor_entry);
 738  738  }
 739  739  
      740 +address InterpreterGenerator::generate_Reference_get_entry(void) {
      741 +#ifndef SERIALGC
      742 +  if (UseG1GC) {
      743 +    // We need to generate have a routine that generates code to:
      744 +    //   * load the value in the referent field
      745 +    //   * passes that value to the pre-barrier.
      746 +    //
      747 +    // In the case of G1 this will record the value of the
      748 +    // referent in an SATB buffer if marking is active.
      749 +    // This will cause concurrent marking to mark the referent
      750 +    // field as live.
      751 +    Unimplemented();
      752 +  }
      753 +#endif // SERIALGC
      754 +
      755 +  // If G1 is not enabled then attempt to go through the accessor entry point
      756 +  // Reference.get is an accessor
      757 +  return generate_accessor_entry();
      758 +}
      759 +
 740  760  address InterpreterGenerator::generate_native_entry(bool synchronized) {
 741  761    assert(synchronized == false, "should be");
 742  762  
 743  763    return generate_entry((address) CppInterpreter::native_entry);
 744  764  }
 745  765  
 746  766  address InterpreterGenerator::generate_normal_entry(bool synchronized) {
 747  767    assert(synchronized == false, "should be");
 748  768  
 749  769    return generate_entry((address) CppInterpreter::normal_entry);
↓ open down ↓ 35 lines elided ↑ open up ↑
 785  805    case Interpreter::java_lang_math_sin:
 786  806    case Interpreter::java_lang_math_cos:
 787  807    case Interpreter::java_lang_math_tan:
 788  808    case Interpreter::java_lang_math_abs:
 789  809    case Interpreter::java_lang_math_log:
 790  810    case Interpreter::java_lang_math_log10:
 791  811    case Interpreter::java_lang_math_sqrt:
 792  812      entry_point = ((InterpreterGenerator*) this)->generate_math_entry(kind);
 793  813      break;
 794  814  
      815 +  case Interpreter::java_lang_ref_reference_get:
      816 +    entry_point = ((InterpreterGenerator*)this)->generate_Reference_get_entry();
      817 +    break;
      818 +
 795  819    default:
 796  820      ShouldNotReachHere();
 797  821    }
 798  822  
 799  823    if (entry_point == NULL)
 800  824      entry_point = ((InterpreterGenerator*) this)->generate_normal_entry(false);
 801  825  
 802  826    return entry_point;
 803  827  }
 804  828  
↓ open down ↓ 171 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX