Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/runtime/stubRoutines.cpp
          +++ new/src/share/vm/runtime/stubRoutines.cpp
   1    1  /*
   2      - * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
        2 + * Copyright (c) 1997, 2011, Oracle and/or its affiliates. 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 ↓ 60 lines elided ↑ open up ↑
  73   73  
  74   74  jint    StubRoutines::_fpu_cntrl_wrd_std                        = 0;
  75   75  jint    StubRoutines::_fpu_cntrl_wrd_24                         = 0;
  76   76  jint    StubRoutines::_fpu_cntrl_wrd_64                         = 0;
  77   77  jint    StubRoutines::_fpu_cntrl_wrd_trunc                      = 0;
  78   78  jint    StubRoutines::_mxcsr_std                                = 0;
  79   79  jint    StubRoutines::_fpu_subnormal_bias1[3]                   = { 0, 0, 0 };
  80   80  jint    StubRoutines::_fpu_subnormal_bias2[3]                   = { 0, 0, 0 };
  81   81  
  82   82  // Compiled code entry points default values
  83      -// The dafault functions don't have separate disjoint versions.
       83 +// The default functions don't have separate disjoint versions.
  84   84  address StubRoutines::_jbyte_arraycopy          = CAST_FROM_FN_PTR(address, StubRoutines::jbyte_copy);
  85   85  address StubRoutines::_jshort_arraycopy         = CAST_FROM_FN_PTR(address, StubRoutines::jshort_copy);
  86   86  address StubRoutines::_jint_arraycopy           = CAST_FROM_FN_PTR(address, StubRoutines::jint_copy);
  87   87  address StubRoutines::_jlong_arraycopy          = CAST_FROM_FN_PTR(address, StubRoutines::jlong_copy);
  88   88  address StubRoutines::_oop_arraycopy            = CAST_FROM_FN_PTR(address, StubRoutines::oop_copy);
       89 +address StubRoutines::_oop_arraycopy_no_pre     = CAST_FROM_FN_PTR(address, StubRoutines::oop_copy_no_pre);
  89   90  address StubRoutines::_jbyte_disjoint_arraycopy          = CAST_FROM_FN_PTR(address, StubRoutines::jbyte_copy);
  90   91  address StubRoutines::_jshort_disjoint_arraycopy         = CAST_FROM_FN_PTR(address, StubRoutines::jshort_copy);
  91   92  address StubRoutines::_jint_disjoint_arraycopy           = CAST_FROM_FN_PTR(address, StubRoutines::jint_copy);
  92   93  address StubRoutines::_jlong_disjoint_arraycopy          = CAST_FROM_FN_PTR(address, StubRoutines::jlong_copy);
  93   94  address StubRoutines::_oop_disjoint_arraycopy            = CAST_FROM_FN_PTR(address, StubRoutines::oop_copy);
       95 +address StubRoutines::_oop_disjoint_arraycopy_no_pre     = CAST_FROM_FN_PTR(address, StubRoutines::oop_copy_no_pre);
  94   96  
  95   97  address StubRoutines::_arrayof_jbyte_arraycopy  = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_jbyte_copy);
  96   98  address StubRoutines::_arrayof_jshort_arraycopy = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_jshort_copy);
  97   99  address StubRoutines::_arrayof_jint_arraycopy   = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_jint_copy);
  98  100  address StubRoutines::_arrayof_jlong_arraycopy  = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_jlong_copy);
  99  101  address StubRoutines::_arrayof_oop_arraycopy    = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_oop_copy);
      102 +address StubRoutines::_arrayof_oop_arraycopy_no_pre      = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_oop_copy_no_pre);
 100  103  address StubRoutines::_arrayof_jbyte_disjoint_arraycopy  = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_jbyte_copy);
 101  104  address StubRoutines::_arrayof_jshort_disjoint_arraycopy = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_jshort_copy);
 102  105  address StubRoutines::_arrayof_jint_disjoint_arraycopy   = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_jint_copy);
 103  106  address StubRoutines::_arrayof_jlong_disjoint_arraycopy  = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_jlong_copy);
 104      -address StubRoutines::_arrayof_oop_disjoint_arraycopy  = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_oop_copy);
      107 +address StubRoutines::_arrayof_oop_disjoint_arraycopy    = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_oop_copy);
      108 +address StubRoutines::_arrayof_oop_disjoint_arraycopy_no_pre  = CAST_FROM_FN_PTR(address, StubRoutines::arrayof_oop_copy_no_pre);
      109 +
 105  110  
 106  111  address StubRoutines::_checkcast_arraycopy               = NULL;
      112 +address StubRoutines::_checkcast_arraycopy_no_pre        = NULL;
 107  113  address StubRoutines::_unsafe_arraycopy                  = NULL;
 108  114  address StubRoutines::_generic_arraycopy                 = NULL;
 109  115  
 110  116  
 111  117  address StubRoutines::_jbyte_fill;
 112  118  address StubRoutines::_jshort_fill;
 113  119  address StubRoutines::_jint_fill;
 114  120  address StubRoutines::_arrayof_jbyte_fill;
 115  121  address StubRoutines::_arrayof_jshort_fill;
 116  122  address StubRoutines::_arrayof_jint_fill;
↓ open down ↓ 211 lines elided ↑ open up ↑
 328  334  JRT_LEAF(void, StubRoutines::oop_copy(oop* src, oop* dest, size_t count))
 329  335  #ifndef PRODUCT
 330  336    SharedRuntime::_oop_array_copy_ctr++;        // Slow-path oop array copy
 331  337  #endif // !PRODUCT
 332  338    assert(count != 0, "count should be non-zero");
 333  339    gen_arraycopy_barrier_pre(dest, count);
 334  340    Copy::conjoint_oops_atomic(src, dest, count);
 335  341    gen_arraycopy_barrier(dest, count);
 336  342  JRT_END
 337  343  
      344 +JRT_LEAF(void, StubRoutines::oop_copy_no_pre(oop* src, oop* dest, size_t count))
      345 +#ifndef PRODUCT
      346 +  SharedRuntime::_oop_array_copy_ctr++;        // Slow-path oop array copy
      347 +#endif // !PRODUCT
      348 +  assert(count != 0, "count should be non-zero");
      349 +  Copy::conjoint_oops_atomic(src, dest, count);
      350 +  gen_arraycopy_barrier(dest, count);
      351 +JRT_END
      352 +
 338  353  JRT_LEAF(void, StubRoutines::arrayof_jbyte_copy(HeapWord* src, HeapWord* dest, size_t count))
 339  354  #ifndef PRODUCT
 340  355    SharedRuntime::_jbyte_array_copy_ctr++;      // Slow-path byte array copy
 341  356  #endif // !PRODUCT
 342  357    Copy::arrayof_conjoint_jbytes(src, dest, count);
 343  358  JRT_END
 344  359  
 345  360  JRT_LEAF(void, StubRoutines::arrayof_jshort_copy(HeapWord* src, HeapWord* dest, size_t count))
 346  361  #ifndef PRODUCT
 347  362    SharedRuntime::_jshort_array_copy_ctr++;     // Slow-path short/char array copy
↓ open down ↓ 18 lines elided ↑ open up ↑
 366  381  JRT_LEAF(void, StubRoutines::arrayof_oop_copy(HeapWord* src, HeapWord* dest, size_t count))
 367  382  #ifndef PRODUCT
 368  383    SharedRuntime::_oop_array_copy_ctr++;        // Slow-path oop array copy
 369  384  #endif // !PRODUCT
 370  385    assert(count != 0, "count should be non-zero");
 371  386    gen_arraycopy_barrier_pre((oop *) dest, count);
 372  387    Copy::arrayof_conjoint_oops(src, dest, count);
 373  388    gen_arraycopy_barrier((oop *) dest, count);
 374  389  JRT_END
 375  390  
      391 +JRT_LEAF(void, StubRoutines::arrayof_oop_copy_no_pre(HeapWord* src, HeapWord* dest, size_t count))
      392 +#ifndef PRODUCT
      393 +  SharedRuntime::_oop_array_copy_ctr++;        // Slow-path oop array copy
      394 +#endif // !PRODUCT
      395 +  assert(count != 0, "count should be non-zero");
      396 +  Copy::arrayof_conjoint_oops(src, dest, count);
      397 +  gen_arraycopy_barrier((oop *) dest, count);
      398 +JRT_END
 376  399  
 377  400  address StubRoutines::select_fill_function(BasicType t, bool aligned, const char* &name) {
 378  401  #define RETURN_STUB(xxx_fill) { \
 379  402    name = #xxx_fill; \
 380  403    return StubRoutines::xxx_fill(); }
 381  404  
 382  405    switch (t) {
 383  406    case T_BYTE:
 384  407    case T_BOOLEAN:
 385  408      if (!aligned) RETURN_STUB(jbyte_fill);
↓ open down ↓ 25 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX