Author: [EMAIL PROTECTED]
Date: Thu Sep 11 09:41:19 2008
New Revision: 287
Modified:
branches/bleeding_edge/src/disasm-arm.cc
branches/bleeding_edge/src/platform-macos.cc
branches/bleeding_edge/src/simulator-arm.cc
branches/bleeding_edge/test/cctest/test-disasm-arm.cc
Log:
Fixed arm disassembler build problems.
Fixed lint issue in platform-macos.
Review URL: http://codereview.chromium.org/1941
Modified: branches/bleeding_edge/src/disasm-arm.cc
==============================================================================
--- branches/bleeding_edge/src/disasm-arm.cc (original)
+++ branches/bleeding_edge/src/disasm-arm.cc Thu Sep 11 09:41:19 2008
@@ -52,10 +52,9 @@
class Decoder {
public:
Decoder(const disasm::NameConverter& converter,
- char* out_buffer, const int out_buffer_size)
+ v8::internal::Vector<char> out_buffer)
: converter_(converter),
out_buffer_(out_buffer),
- out_buffer_size_(out_buffer_size),
out_buffer_pos_(0) {
ASSERT(out_buffer_size_ > 0);
out_buffer_[out_buffer_pos_] = '\0';
@@ -69,8 +68,7 @@
private:
const disasm::NameConverter& converter_;
- char* out_buffer_;
- const int out_buffer_size_;
+ v8::internal::Vector<char> out_buffer_;
int out_buffer_pos_;
void PrintChar(const char ch);
@@ -106,7 +104,7 @@
// Append the str to the output buffer.
void Decoder::Print(const char* str) {
char cur = *str++;
- while (cur != 0 && (out_buffer_pos_ < (out_buffer_size_-1))) {
+ while (cur != 0 && (out_buffer_pos_ < (out_buffer_.length()-1))) {
PrintChar(cur);
cur = *str++;
}
@@ -159,14 +157,12 @@
shift_amount = 32;
}
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
- out_buffer_size_ -
out_buffer_pos_,
", %s #%d",
shift_names[shift], shift_amount);
} else {
// by register
int rs = instr->RsField();
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
- out_buffer_size_ -
out_buffer_pos_,
", %s ", shift_names[shift]);
PrintRegister(rs);
}
@@ -180,7 +176,6 @@
int immed8 = instr->Immed8Field();
int imm = (immed8 >> rotate) | (immed8 << (32 - rotate));
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
- out_buffer_size_ - out_buffer_pos_,
"#%d", imm);
}
@@ -250,7 +245,6 @@
byte* str =
reinterpret_cast<byte*>(instr->InstructionBits() & 0x0fffffff);
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
- out_buffer_size_ -
out_buffer_pos_,
"%s",
converter_.NameInCode(str));
return 3;
}
@@ -262,7 +256,6 @@
// 'off12: 12-bit offset for load and store instructions
ASSERT(format[4] == '2');
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
- out_buffer_size_ -
out_buffer_pos_,
"%d", instr->Offset12Field());
return 5;
} else {
@@ -270,7 +263,6 @@
ASSERT(format[3] == '8');
int offs8 = (instr->ImmedHField() << 4) | instr->ImmedLField();
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
- out_buffer_size_ -
out_buffer_pos_,
"%d", offs8);
return 4;
}
@@ -367,7 +359,6 @@
default:
out_buffer_pos_ += v8i::OS::SNPrintF(
out_buffer_ + out_buffer_pos_,
- out_buffer_size_ - out_buffer_pos_,
"%d",
swi);
break;
@@ -394,7 +385,6 @@
int off = (instr->SImmed24Field() << 2) + 8;
out_buffer_pos_ += v8i::OS::SNPrintF(
out_buffer_ + out_buffer_pos_,
- out_buffer_size_ - out_buffer_pos_,
"%+d -> %s",
off,
converter_.NameOfAddress(reinterpret_cast<byte*>(instr) + off));
@@ -432,7 +422,7 @@
// parsed further.
void Decoder::Format(Instr* instr, const char* format) {
char cur = *format++;
- while ((cur != 0) && (out_buffer_pos_ < (out_buffer_size_ - 1))) {
+ while ((cur != 0) && (out_buffer_pos_ < (out_buffer_.length() - 1))) {
if (cur == '\'') { // Single quote is used as the formatting escape.
format += FormatOption(instr, format);
} else {
@@ -804,7 +794,6 @@
Instr* instr = Instr::At(instr_ptr);
// Print raw instruction bytes.
out_buffer_pos_ += v8i::OS::SNPrintF(out_buffer_ + out_buffer_pos_,
- out_buffer_size_ - out_buffer_pos_,
"%08x ",
instr->InstructionBits());
if (instr->ConditionField() == special_condition) {
@@ -922,9 +911,9 @@
Disassembler::~Disassembler() {}
-int Disassembler::InstructionDecode(char* buffer, const int buffer_size,
+int Disassembler::InstructionDecode(v8::internal::Vector<char> buffer,
byte* instruction) {
- assembler::arm::Decoder d(converter_, buffer, buffer_size);
+ assembler::arm::Decoder d(converter_, buffer);
return d.InstructionDecode(instruction);
}
@@ -942,12 +931,12 @@
void Disassembler::Disassemble(FILE* f, byte* begin, byte* end) {
Disassembler d;
for (byte* pc = begin; pc < end;) {
- char buffer[128];
+ v8::internal::EmbeddedVector<char, 128> buffer;
buffer[0] = '\0';
byte* prev_pc = pc;
- pc += d.InstructionDecode(buffer, sizeof buffer, pc);
+ pc += d.InstructionDecode(buffer, pc);
fprintf(f, "%p %08x %s\n",
- prev_pc, *reinterpret_cast<int32_t*>(prev_pc), buffer);
+ prev_pc, *reinterpret_cast<int32_t*>(prev_pc), buffer.start());
}
}
Modified: branches/bleeding_edge/src/platform-macos.cc
==============================================================================
--- branches/bleeding_edge/src/platform-macos.cc (original)
+++ branches/bleeding_edge/src/platform-macos.cc Thu Sep 11 09:41:19 2008
@@ -321,7 +321,7 @@
frames[i].address = addresses[i];
// Format a text representation of the frame based on the information
// available.
- SNPrintF(MutableCStrVector(frames[i].text,
+ SNPrintF(MutableCStrVector(frames[i].text,
kStackWalkMaxTextLen),
"%s",
symbols[i]);
Modified: branches/bleeding_edge/src/simulator-arm.cc
==============================================================================
--- branches/bleeding_edge/src/simulator-arm.cc (original)
+++ branches/bleeding_edge/src/simulator-arm.cc Thu Sep 11 09:41:19 2008
@@ -204,10 +204,11 @@
while (!done) {
if (last_pc != sim_->get_pc()) {
disasm::Disassembler dasm;
- char buffer[256]; // use a reasonably large buffer
- dasm.InstructionDecode(buffer, sizeof(buffer),
+ // use a reasonably large buffer
+ v8::internal::EmbeddedVector<char, 256> buffer;
+ dasm.InstructionDecode(buffer,
reinterpret_cast<byte*>(sim_->get_pc()));
- PrintF(" 0x%x %s\n", sim_->get_pc(), buffer);
+ PrintF(" 0x%x %s\n", sim_->get_pc(), buffer.start());
last_pc = sim_->get_pc();
}
char* line = ReadLine("sim> ");
@@ -258,7 +259,8 @@
}
} else if (strcmp(cmd, "disasm") == 0) {
disasm::Disassembler dasm;
- char buffer[256]; // use a reasonably large buffer
+ // use a reasonably large buffer
+ v8::internal::EmbeddedVector<char, 256> buffer;
byte* cur = NULL;
byte* end = NULL;
@@ -283,8 +285,8 @@
}
while (cur < end) {
- dasm.InstructionDecode(buffer, sizeof(buffer), cur);
- PrintF(" 0x%x %s\n", cur, buffer);
+ dasm.InstructionDecode(buffer, cur);
+ PrintF(" 0x%x %s\n", cur, buffer.start());
cur += Instr::kInstrSize;
}
} else if (strcmp(cmd, "gdb") == 0) {
@@ -1341,11 +1343,11 @@
}
if (FLAG_trace_sim) {
disasm::Disassembler dasm;
- char buffer[256]; // use a reasonably large buffer
+ // use a reasonably large buffer
+ v8::internal::EmbeddedVector<char, 256> buffer;
dasm.InstructionDecode(buffer,
- sizeof(buffer),
reinterpret_cast<byte*>(instr));
- PrintF(" 0x%x %s\n", instr, buffer);
+ PrintF(" 0x%x %s\n", instr, buffer.start());
}
if (ConditionallyExecute(instr)) {
switch (instr->TypeField()) {
Modified: branches/bleeding_edge/test/cctest/test-disasm-arm.cc
==============================================================================
--- branches/bleeding_edge/test/cctest/test-disasm-arm.cc (original)
+++ branches/bleeding_edge/test/cctest/test-disasm-arm.cc Thu Sep 11
09:41:19 2008
@@ -51,17 +51,17 @@
bool DisassembleAndCompare(byte* pc, const char* compare_string) {
disasm::Disassembler disasm;
- char disasm_buffer[128];
+ EmbeddedVector<char, 128> disasm_buffer;
- disasm.InstructionDecode(disasm_buffer, sizeof disasm_buffer, pc);
+ disasm.InstructionDecode(disasm_buffer, pc);
- if (strcmp(compare_string, disasm_buffer) != 0) {
+ if (strcmp(compare_string, disasm_buffer.start()) != 0) {
fprintf(stderr,
"expected: \n"
"%s\n"
"disassembled: \n"
"%s\n\n",
- compare_string, disasm_buffer);
+ compare_string, disasm_buffer.start());
return false;
}
return true;
--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---