# HG changeset patch # User Gilles Duboscq # Date 1413367460 -7200 # Node ID 562643f42b65dcec2b7065ef77988b9e8a3ac9a4 # Parent 89152779163c59b0534d20881d4701db8748d0d4# Parent 8a67179106085689906732013a282efeeb9bd5f4 Merge with jdk8u5-b13 diff -r 89152779163c -r 562643f42b65 .hgtags --- a/.hgtags Wed Oct 15 11:59:32 2014 +0200 +++ b/.hgtags Wed Oct 15 12:04:20 2014 +0200 @@ -421,6 +421,19 @@ 1dbaf664a611e5d9cab6d1be42537b67d0d05f94 jdk8-b130 b5e7ebfe185cb4c2eeb8a919025fc6a26be2fcef jdk8-b131 9f9179e8f0cfe74c08f3716cf3c38e21e1de4c4a hs25-b70 +0c94c41dcd70e9a9b4d96e31275afd5a73daa72d jdk8-b132 +4a35ef38e2a7bc64df20c7700ba69b37e3ddb8b5 jdk8u5-b01 +e5561d89fe8bfc79cd6c8fcc36d270cc6a49ec6e jdk8u5-b02 +2f9eb9fcab6c42c8c84ddb44170ea33235116d84 jdk8u5-b03 +5ac720d47ab83f8eb2f5fe3641667823a0298f41 jdk8u5-b04 +b90de55aca30678ab0fec05d6a61bb3468b783d2 jdk8u5-b05 +956c0e048ef29ee9a8026fb05858abe64b4e0ceb jdk8u5-b06 +46fa2940e6861df18a107b6b83a2df85239e5ec7 jdk8u5-b07 +21c1dfbed277791071947eed1c93806ccf48a7d8 jdk8u5-b08 +6af9ce1c56a6545ec6c992a5f61b2eec924be040 jdk8u5-b09 +629267e4f0b5155608edcd71922983be98786bd7 jdk8u5-b10 +17a75e692af397532e2b296b24f6b9b6c239c633 jdk8u5-b11 +9b289963cb9a14636fbe8faaa2dd6d3678464a7b jdk8u5-b12 b124e22eb772806c13d942cc110de38da0108147 graal-0.1 483d05bf77a7c2a762aca1e06c4191bc06647176 graal-0.2 9535eccd2a115f6c6f0b15efb508b11ff74cc0d3 graal-0.3 diff -r 89152779163c -r 562643f42b65 THIRD_PARTY_README --- a/THIRD_PARTY_README Wed Oct 15 11:59:32 2014 +0200 +++ b/THIRD_PARTY_README Wed Oct 15 12:04:20 2014 +0200 @@ -1399,13 +1399,13 @@ ------------------------------------------------------------------------------- -%% This notice is provided with respect to Little CMS 2.4, which may be +%% This notice is provided with respect to Little CMS 2.5, which may be included with JRE 8, JDK 8, and OpenJDK 8. --- begin of LICENSE --- Little CMS -Copyright (c) 1998-2010 Marti Maria Saguer +Copyright (c) 1998-2011 Marti Maria Saguer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff -r 89152779163c -r 562643f42b65 make/hotspot_version --- a/make/hotspot_version Wed Oct 15 11:59:32 2014 +0200 +++ b/make/hotspot_version Wed Oct 15 12:04:20 2014 +0200 @@ -34,8 +34,8 @@ HOTSPOT_VM_COPYRIGHT=Copyright 2014 HS_MAJOR_VER=25 -HS_MINOR_VER=0 -HS_BUILD_NUMBER=70 +HS_MINOR_VER=5 +HS_BUILD_NUMBER=02 JDK_MAJOR_VER=1 JDK_MINOR_VER=8 diff -r 89152779163c -r 562643f42b65 src/share/vm/classfile/classFileParser.cpp --- a/src/share/vm/classfile/classFileParser.cpp Wed Oct 15 11:59:32 2014 +0200 +++ b/src/share/vm/classfile/classFileParser.cpp Wed Oct 15 12:04:20 2014 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -2783,6 +2783,11 @@ "Short length on BootstrapMethods in class file %s", CHECK); + guarantee_property(attribute_byte_length > sizeof(u2), + "Invalid BootstrapMethods attribute length %u in class file %s", + attribute_byte_length, + CHECK); + // The attribute contains a counted array of counted tuples of shorts, // represending bootstrap specifiers: // length*{bootstrap_method_index, argument_count*{argument_index}} diff -r 89152779163c -r 562643f42b65 src/share/vm/oops/objArrayKlass.cpp --- a/src/share/vm/oops/objArrayKlass.cpp Wed Oct 15 11:59:32 2014 +0200 +++ b/src/share/vm/oops/objArrayKlass.cpp Wed Oct 15 12:04:20 2014 +0200 @@ -269,7 +269,7 @@ if (element_is_null || (new_val->klass())->is_subtype_of(bound)) { bs->write_ref_field_pre(p, new_val); - *p = *from; + *p = element; } else { // We must do a barrier to cover the partial copy. const size_t pd = pointer_delta(p, dst, (size_t)heapOopSize); diff -r 89152779163c -r 562643f42b65 src/share/vm/opto/output.cpp --- a/src/share/vm/opto/output.cpp Wed Oct 15 11:59:32 2014 +0200 +++ b/src/share/vm/opto/output.cpp Wed Oct 15 12:04:20 2014 +0200 @@ -344,6 +344,11 @@ uint* jmp_offset = NEW_RESOURCE_ARRAY(uint,nblocks); uint* jmp_size = NEW_RESOURCE_ARRAY(uint,nblocks); int* jmp_nidx = NEW_RESOURCE_ARRAY(int ,nblocks); + + // Collect worst case block paddings + int* block_worst_case_pad = NEW_RESOURCE_ARRAY(int, nblocks); + memset(block_worst_case_pad, 0, nblocks * sizeof(int)); + DEBUG_ONLY( uint *jmp_target = NEW_RESOURCE_ARRAY(uint,nblocks); ) DEBUG_ONLY( uint *jmp_rule = NEW_RESOURCE_ARRAY(uint,nblocks); ) @@ -460,6 +465,7 @@ last_avoid_back_to_back_adr += max_loop_pad; } blk_size += max_loop_pad; + block_worst_case_pad[i + 1] = max_loop_pad; } } @@ -499,9 +505,16 @@ if (bnum > i) { // adjust following block's offset offset -= adjust_block_start; } + + // This block can be a loop header, account for the padding + // in the previous block. + int block_padding = block_worst_case_pad[i]; + assert(i == 0 || block_padding == 0 || br_offs >= block_padding, "Should have at least a padding on top"); // In the following code a nop could be inserted before // the branch which will increase the backward distance. - bool needs_padding = ((uint)br_offs == last_may_be_short_branch_adr); + bool needs_padding = ((uint)(br_offs - block_padding) == last_may_be_short_branch_adr); + assert(!needs_padding || jmp_offset[i] == 0, "padding only branches at the beginning of block"); + if (needs_padding && offset <= 0) offset -= nop_size;