comparison src/share/vm/graal/graalCodeInstaller.cpp @ 18196:ff1f1481b367

Fix bug in code installer.
author Roland Schatz <roland.schatz@oracle.com>
date Thu, 30 Oct 2014 18:14:41 +0100
parents 9619ba4daf4c
children a8cff27ca2e1 6eda3b299460
comparison
equal deleted inserted replaced
18195:62d3440228b8 18196:ff1f1481b367
550 _debug_recorder = new DebugInformationRecorder(_oop_recorder); 550 _debug_recorder = new DebugInformationRecorder(_oop_recorder);
551 _debug_recorder->set_oopmaps(new OopMapSet()); 551 _debug_recorder->set_oopmaps(new OopMapSet());
552 552
553 buffer.initialize_oop_recorder(_oop_recorder); 553 buffer.initialize_oop_recorder(_oop_recorder);
554 554
555 // copy the constant data into the newly created CodeBuffer
556 address end_data = _constants->start() + _constants_size;
557 memcpy(_constants->start(), data_section()->base(T_BYTE), _constants_size);
558 _constants->set_end(end_data);
559
555 // copy the code into the newly created CodeBuffer 560 // copy the code into the newly created CodeBuffer
556 address end_pc = _instructions->start() + _code_size; 561 address end_pc = _instructions->start() + _code_size;
557 if (!_instructions->allocates2(end_pc)) { 562 if (!_instructions->allocates2(end_pc)) {
558 return false; 563 return false;
559 } 564 }
560 memcpy(_instructions->start(), code()->base(T_BYTE), code()->length()); 565 memcpy(_instructions->start(), code()->base(T_BYTE), _code_size);
561 _instructions->set_end(end_pc); 566 _instructions->set_end(end_pc);
562
563 // copy the constant data into the newly created CodeBuffer
564 address end_data = _constants->start() + _constants_size;
565 memcpy(_constants->start(), data_section()->base(T_BYTE), _constants_size);
566 _constants->set_end(end_data);
567
568 567
569 for (int i = 0; i < data_section_patches()->length(); i++) { 568 for (int i = 0; i < data_section_patches()->length(); i++) {
570 Handle patch = data_section_patches()->obj_at(i); 569 Handle patch = data_section_patches()->obj_at(i);
571 Handle reference = CompilationResult_DataPatch::reference(patch); 570 Handle reference = CompilationResult_DataPatch::reference(patch);
572 assert(reference->is_a(CompilationResult_ConstantReference::klass()), err_msg("patch in data section must be a ConstantReference")); 571 assert(reference->is_a(CompilationResult_ConstantReference::klass()), err_msg("patch in data section must be a ConstantReference"));