Ignore:
Timestamp:
Jun 15, 2008, 4:59:24 PM (17 years ago)
Author:
[email protected]
Message:

2008-06-15 Maciej Stachowiak <[email protected]>

Reviewed by Alexey.


  • add emitUnaryOp, emitNullaryOp and emitUnaryOpNoDst; use them


This removes some boilerplate code and also reduces the number of
places that will need to be changed to do on-demand emit of
loads (and thus support k operands).

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitUnaryOp): (KJS::CodeGenerator::emitNullaryOp): (KJS::CodeGenerator::emitUnaryOpNoDst): (KJS::CodeGenerator::emitPushScope):
  • VM/CodeGenerator.h: (KJS::CodeGenerator::emitNewObject): (KJS::CodeGenerator::emitNewArray): (KJS::CodeGenerator::emitNot): (KJS::CodeGenerator::emitBitNot): (KJS::CodeGenerator::emitToJSNumber): (KJS::CodeGenerator::emitNegate): (KJS::CodeGenerator::emitInstanceOf): (KJS::CodeGenerator::emitTypeOf): (KJS::CodeGenerator::emitIn): (KJS::CodeGenerator::emitReturn): (KJS::CodeGenerator::emitEnd): (KJS::CodeGenerator::emitGetPropertyNames):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/VM/CodeGenerator.cpp

    r34562 r34576  
    510510}
    511511
    512 RegisterID* CodeGenerator::emitNot(RegisterID* dst, RegisterID* src)
    513 {
    514     emitOpcode(op_not);
     512RegisterID* CodeGenerator::emitUnaryOp(OpcodeID opcode, RegisterID* dst, RegisterID* src)
     513{
     514    emitOpcode(opcode);
    515515    instructions().append(dst->index());
    516516    instructions().append(src->index());
     
    548548}
    549549
    550 RegisterID* CodeGenerator::emitToJSNumber(RegisterID* dst, RegisterID* src)
    551 {
    552     emitOpcode(op_to_jsnumber);
    553     instructions().append(dst->index());
    554     instructions().append(src->index());
    555     return dst;
    556 }
    557 
    558 RegisterID* CodeGenerator::emitNegate(RegisterID* dst, RegisterID* src)
    559 {
    560     emitOpcode(op_negate);
    561     instructions().append(dst->index());
    562     instructions().append(src->index());
    563     return dst;
    564 }
    565 
    566 RegisterID* CodeGenerator::emitBitNot(RegisterID* dst, RegisterID* src)
    567 {
    568     emitOpcode(op_bitnot);
    569     instructions().append(dst->index());
    570     instructions().append(src->index());
    571     return dst;
    572 }
    573 
    574550RegisterID* CodeGenerator::emitBinaryOp(OpcodeID opcode, RegisterID* dst, RegisterID* src1, RegisterID* src2)
    575551{
     
    581557}
    582558
    583 RegisterID* CodeGenerator::emitInstanceOf(RegisterID* dst, RegisterID* value, RegisterID* base)
    584 {
    585     emitOpcode(op_instanceof);
    586     instructions().append(dst->index());
    587     instructions().append(value->index());
    588     instructions().append(base->index());
    589     return dst;
    590 }
    591 
    592 RegisterID* CodeGenerator::emitTypeOf(RegisterID* dst, RegisterID* src)
    593 {
    594     emitOpcode(op_typeof);
    595     instructions().append(dst->index());
    596     instructions().append(src->index());
    597     return dst;
    598 }
    599 
    600 RegisterID* CodeGenerator::emitIn(RegisterID* dst, RegisterID* property, RegisterID* base)
    601 {
    602     emitOpcode(op_in);
    603     instructions().append(dst->index());
    604     instructions().append(property->index());
    605     instructions().append(base->index());
    606     return dst;
    607 }
    608 
    609559RegisterID* CodeGenerator::emitLoad(RegisterID* dst, bool b)
    610560{
     
    631581}
    632582
    633 RegisterID* CodeGenerator::emitNewObject(RegisterID* dst)
    634 {
    635     emitOpcode(op_new_object);
    636     instructions().append(dst->index());
    637     return dst;
    638 }
    639 
    640 RegisterID* CodeGenerator::emitNewArray(RegisterID* dst)
    641 {
    642     emitOpcode(op_new_array);
     583RegisterID* CodeGenerator::emitNullaryOp(OpcodeID opcode, RegisterID* dst)
     584{
     585    emitOpcode(opcode);
    643586    instructions().append(dst->index());
    644587    return dst;
     
    896839}
    897840
    898 RegisterID* CodeGenerator::emitReturn(RegisterID* r0)
    899 {
    900     emitOpcode(op_ret);
    901     instructions().append(r0->index());
    902     return r0;
    903 }
    904 
    905 RegisterID* CodeGenerator::emitEnd(RegisterID* dst)
    906 {
    907     emitOpcode(op_end);
    908     instructions().append(dst->index());
    909     return dst;
     841RegisterID* CodeGenerator::emitUnaryNoDstOp(OpcodeID opcode, RegisterID* src)
     842{
     843    emitOpcode(opcode);
     844    instructions().append(src->index());
     845    return src;
    910846}
    911847
     
    936872{
    937873    m_codeBlock->needsFullScopeChain = true;
    938     emitOpcode(op_push_scope);
    939     instructions().append(scope->index());
    940 
    941874    ControlFlowContext context;
    942875    context.isFinallyBlock = false;
    943876    m_scopeContextStack.append(context);
    944877    m_dynamicScopeDepth++;
    945     return scope;
     878
     879    return emitUnaryNoDstOp(op_push_scope, scope);
    946880}
    947881
     
    11181052}
    11191053
    1120 RegisterID* CodeGenerator::emitGetPropertyNames(RegisterID* dst, RegisterID* base)
    1121 {
    1122     emitOpcode(op_get_pnames);
    1123     instructions().append(dst->index());
    1124     instructions().append(base->index());
    1125     return dst;
    1126 }
    1127 
    11281054RegisterID* CodeGenerator::emitCatch(RegisterID* targetRegister, LabelID* start, LabelID* end)
    11291055{
     
    11351061}
    11361062
    1137 void CodeGenerator::emitThrow(RegisterID* exception)
    1138 {
    1139     emitOpcode(op_throw);
    1140     instructions().append(exception->index());
    1141 }
    1142 
    11431063RegisterID* CodeGenerator::emitNewError(RegisterID* dst, ErrorType type, JSValue* message)
    11441064{
Note: See TracChangeset for help on using the changeset viewer.