moved all machine generated classes, etc. to icode.h.

This commit is contained in:
beard%netscape.com 2000-06-29 04:19:19 +00:00
parent 2a451cdd8b
commit 486b437613
4 changed files with 154 additions and 2250 deletions

View File

@ -37,77 +37,79 @@
namespace JavaScript { namespace JavaScript {
namespace VM { namespace VM {
using namespace JSTypes; using namespace JSTypes;
Formatter& operator<< (Formatter& f, Instruction& i)
{
return i.print(f);
}
Formatter& operator<< (Formatter& f, RegisterList& rl)
{
TypedRegister* e = rl.end();
f << "(";
for (RegisterList::iterator r = rl.begin(); r != e; r++) {
f << "R" << r->first;
if ((r + 1) != e)
f << ", ";
}
f << ")";
return f;
}
Formatter& operator<< (Formatter& f, const ArgList& al) #define OPCODE_NAMES
{ #include "icode.h"
const RegisterList& rl = al.mList;
const JSValues& registers = al.mRegisters; Formatter& operator<< (Formatter& f, Instruction& i)
f << "("; {
RegisterList::const_iterator i = rl.begin(), e = rl.end(); return i.print(f);
if (i != e) { }
TypedRegister r = *i++;
f << "R" << r.first << '=' << registers[r.first]; Formatter& operator<< (Formatter& f, RegisterList& rl)
while (i != e) { {
r = *i++; TypedRegister* e = rl.end();
f << ", R" << r.first << '=' << registers[r.first];
f << "(";
for (RegisterList::iterator r = rl.begin(); r != e; r++) {
f << "R" << r->first;
if ((r + 1) != e)
f << ", ";
}
f << ")";
return f;
}
Formatter& operator<< (Formatter& f, const ArgList& al)
{
const RegisterList& rl = al.mList;
const JSValues& registers = al.mRegisters;
f << "(";
RegisterList::const_iterator i = rl.begin(), e = rl.end();
if (i != e) {
TypedRegister r = *i++;
f << "R" << r.first << '=' << registers[r.first];
while (i != e) {
r = *i++;
f << ", R" << r.first << '=' << registers[r.first];
}
}
f << ")";
return f;
}
Formatter& operator<< (Formatter &f, InstructionStream &is)
{
for (InstructionIterator i = is.begin();
i != is.end(); i++) {
/*
bool isLabel = false;
for (LabelList::iterator k = labels.begin();
k != labels.end(); k++)
if ((ptrdiff_t)(*k)->mOffset == (i - is.begin())) {
f << "#" << (uint32)(i - is.begin()) << "\t";
isLabel = true;
break;
} }
}
f << ")"; if (!isLabel)
f << "\t";
return f;
f << **i << "\n";
*/
printFormat(stdOut, "%04u", (uint32)(i - is.begin()));
f << ": " << **i << "\n";
} }
Formatter& operator<< (Formatter &f, InstructionStream &is) return f;
{ }
for (InstructionIterator i = is.begin();
i != is.end(); i++) {
/*
bool isLabel = false;
for (LabelList::iterator k = labels.begin();
k != labels.end(); k++)
if ((ptrdiff_t)(*k)->mOffset == (i - is.begin())) {
f << "#" << (uint32)(i - is.begin()) << "\t";
isLabel = true;
break;
}
if (!isLabel)
f << "\t";
f << **i << "\n";
*/
printFormat(stdOut, "%04u", (uint32)(i - is.begin()));
f << ": " << **i << "\n";
}
return f;
}
} /* namespace VM */ } /* namespace VM */
} /* namespace JavaScript */ } /* namespace JavaScript */

File diff suppressed because it is too large Load Diff

View File

@ -37,77 +37,79 @@
namespace JavaScript { namespace JavaScript {
namespace VM { namespace VM {
using namespace JSTypes; using namespace JSTypes;
Formatter& operator<< (Formatter& f, Instruction& i)
{
return i.print(f);
}
Formatter& operator<< (Formatter& f, RegisterList& rl)
{
TypedRegister* e = rl.end();
f << "(";
for (RegisterList::iterator r = rl.begin(); r != e; r++) {
f << "R" << r->first;
if ((r + 1) != e)
f << ", ";
}
f << ")";
return f;
}
Formatter& operator<< (Formatter& f, const ArgList& al) #define OPCODE_NAMES
{ #include "icode.h"
const RegisterList& rl = al.mList;
const JSValues& registers = al.mRegisters; Formatter& operator<< (Formatter& f, Instruction& i)
f << "("; {
RegisterList::const_iterator i = rl.begin(), e = rl.end(); return i.print(f);
if (i != e) { }
TypedRegister r = *i++;
f << "R" << r.first << '=' << registers[r.first]; Formatter& operator<< (Formatter& f, RegisterList& rl)
while (i != e) { {
r = *i++; TypedRegister* e = rl.end();
f << ", R" << r.first << '=' << registers[r.first];
f << "(";
for (RegisterList::iterator r = rl.begin(); r != e; r++) {
f << "R" << r->first;
if ((r + 1) != e)
f << ", ";
}
f << ")";
return f;
}
Formatter& operator<< (Formatter& f, const ArgList& al)
{
const RegisterList& rl = al.mList;
const JSValues& registers = al.mRegisters;
f << "(";
RegisterList::const_iterator i = rl.begin(), e = rl.end();
if (i != e) {
TypedRegister r = *i++;
f << "R" << r.first << '=' << registers[r.first];
while (i != e) {
r = *i++;
f << ", R" << r.first << '=' << registers[r.first];
}
}
f << ")";
return f;
}
Formatter& operator<< (Formatter &f, InstructionStream &is)
{
for (InstructionIterator i = is.begin();
i != is.end(); i++) {
/*
bool isLabel = false;
for (LabelList::iterator k = labels.begin();
k != labels.end(); k++)
if ((ptrdiff_t)(*k)->mOffset == (i - is.begin())) {
f << "#" << (uint32)(i - is.begin()) << "\t";
isLabel = true;
break;
} }
}
f << ")"; if (!isLabel)
f << "\t";
return f;
f << **i << "\n";
*/
printFormat(stdOut, "%04u", (uint32)(i - is.begin()));
f << ": " << **i << "\n";
} }
Formatter& operator<< (Formatter &f, InstructionStream &is) return f;
{ }
for (InstructionIterator i = is.begin();
i != is.end(); i++) {
/*
bool isLabel = false;
for (LabelList::iterator k = labels.begin();
k != labels.end(); k++)
if ((ptrdiff_t)(*k)->mOffset == (i - is.begin())) {
f << "#" << (uint32)(i - is.begin()) << "\t";
isLabel = true;
break;
}
if (!isLabel)
f << "\t";
f << **i << "\n";
*/
printFormat(stdOut, "%04u", (uint32)(i - is.begin()));
f << ": " << **i << "\n";
}
return f;
}
} /* namespace VM */ } /* namespace VM */
} /* namespace JavaScript */ } /* namespace JavaScript */

File diff suppressed because it is too large Load Diff