equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
319 set_long_at(sethi_offset, set_data32_sethi( long_at(sethi_offset), x)); |
319 set_long_at(sethi_offset, set_data32_sethi( long_at(sethi_offset), x)); |
320 #endif |
320 #endif |
321 set_long_at(add_offset, set_data32_simm13( long_at(add_offset), x)); |
321 set_long_at(add_offset, set_data32_simm13( long_at(add_offset), x)); |
322 |
322 |
323 // also store the value into an oop_Relocation cell, if any |
323 // also store the value into an oop_Relocation cell, if any |
324 CodeBlob* nm = CodeCache::find_blob(instruction_address()); |
324 CodeBlob* cb = CodeCache::find_blob(instruction_address()); |
|
325 nmethod* nm = cb ? cb->as_nmethod_or_null() : NULL; |
325 if (nm != NULL) { |
326 if (nm != NULL) { |
326 RelocIterator iter(nm, instruction_address(), next_instruction_address()); |
327 RelocIterator iter(nm, instruction_address(), next_instruction_address()); |
327 oop* oop_addr = NULL; |
328 oop* oop_addr = NULL; |
328 while (iter.next()) { |
329 while (iter.next()) { |
329 if (iter.type() == relocInfo::oop_type) { |
330 if (iter.type() == relocInfo::oop_type) { |
428 set_long_at(sethi_offset, set_data32_sethi(long_at(sethi_offset), x)); |
429 set_long_at(sethi_offset, set_data32_sethi(long_at(sethi_offset), x)); |
429 #endif |
430 #endif |
430 set_long_at(add_offset, set_data32_simm13(long_at(add_offset), x)); |
431 set_long_at(add_offset, set_data32_simm13(long_at(add_offset), x)); |
431 |
432 |
432 // also store the value into an oop_Relocation cell, if any |
433 // also store the value into an oop_Relocation cell, if any |
433 CodeBlob* nm = CodeCache::find_blob(instruction_address()); |
434 CodeBlob* cb = CodeCache::find_blob(instruction_address()); |
|
435 nmethod* nm = cb ? cb->as_nmethod_or_null() : NULL; |
434 if (nm != NULL) { |
436 if (nm != NULL) { |
435 RelocIterator iter(nm, instruction_address(), next_instruction_address()); |
437 RelocIterator iter(nm, instruction_address(), next_instruction_address()); |
436 oop* oop_addr = NULL; |
438 oop* oop_addr = NULL; |
437 while (iter.next()) { |
439 while (iter.next()) { |
438 if (iter.type() == relocInfo::oop_type) { |
440 if (iter.type() == relocInfo::oop_type) { |