提交 b64dd41b 编写于 作者: T twisti

7104561: UseRDPCForConstantTableBase doesn't work after shorten branches changes

Reviewed-by: never, kvn
上级 bb5f04dd
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 2011, 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
......@@ -211,7 +211,7 @@ void VM_Version::initialize() {
#ifdef COMPILER2
// T4 and newer Sparc cpus have fast RDPC.
if (has_fast_rdpc() && FLAG_IS_DEFAULT(UseRDPCForConstantTableBase)) {
// FLAG_SET_DEFAULT(UseRDPCForConstantTableBase, true);
FLAG_SET_DEFAULT(UseRDPCForConstantTableBase, true);
}
// Currently not supported anywhere.
......
......@@ -484,6 +484,13 @@ int MachConstantNode::constant_offset() {
// Bind the offset lazily.
if (offset == -1) {
Compile::ConstantTable& constant_table = Compile::current()->constant_table();
// If called from Compile::scratch_emit_size assume the worst-case
// for load offsets: half the constant table size.
// NOTE: Don't return or calculate the actual offset (which might
// be zero) because that leads to problems with e.g. jumpXtnd on
// some architectures (cf. add-optimization in SPARC jumpXtnd).
if (Compile::current()->in_scratch_emit_size())
return constant_table.size() / 2;
offset = constant_table.table_base_offset() + constant_table.find_offset(_constant);
_constant.set_offset(offset);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册