void ValueSource::dump(PrintStream& out) const { switch (kind()) { case SourceNotSet: out.print("SourceNotSet"); return; case ValueInJSStack: out.print("ValueInJSStack:", virtualRegister()); return; case Int32InJSStack: out.print("Int32InJSStack:", virtualRegister()); return; case Int52InJSStack: out.print("Int52InJSStack:", virtualRegister()); return; case DoubleInJSStack: out.print("DoubleInJSStack:", virtualRegister()); return; case SourceIsDead: out.print("SourceIsDead"); return; case HaveNode: out.print("Node(", node(), ")"); return; } RELEASE_ASSERT_NOT_REACHED(); }
void ExitValue::dumpInContext(PrintStream& out, DumpContext* context) const { switch (kind()) { case InvalidExitValue: out.print("Invalid"); return; case ExitValueDead: out.print("Dead"); return; case ExitValueArgument: out.print("Argument(", exitArgument(), ")"); return; case ExitValueConstant: out.print("Constant(", inContext(constant(), context), ")"); return; case ExitValueInJSStack: out.print("InJSStack:r", virtualRegister()); return; case ExitValueInJSStackAsInt32: out.print("InJSStackAsInt32:r", virtualRegister()); return; case ExitValueInJSStackAsInt52: out.print("InJSStackAsInt52:r", virtualRegister()); return; case ExitValueInJSStackAsDouble: out.print("InJSStackAsDouble:r", virtualRegister()); return; case ExitValueRecovery: out.print("Recovery(", recoveryOpcode(), ", arg", leftRecoveryArgument(), ", arg", rightRecoveryArgument(), ", ", recoveryFormat(), ")"); return; } RELEASE_ASSERT_NOT_REACHED(); }
ExitValue ExitValue::withLocalsOffset(int offset) const { if (!isInJSStackSomehow()) return *this; if (!virtualRegister().isLocal()) return *this; return withVirtualRegister(virtualRegister() + offset); }
JSValue ValueRecovery::recover(ExecState* exec) const { switch (technique()) { case DisplacedInJSStack: return exec->r(virtualRegister().offset()).jsValue(); case Int32DisplacedInJSStack: return jsNumber(exec->r(virtualRegister().offset()).unboxedInt32()); case Int52DisplacedInJSStack: return jsNumber(exec->r(virtualRegister().offset()).unboxedInt52()); case StrictInt52DisplacedInJSStack: return jsNumber(exec->r(virtualRegister().offset()).unboxedStrictInt52()); case DoubleDisplacedInJSStack: return jsNumber(exec->r(virtualRegister().offset()).unboxedDouble()); case CellDisplacedInJSStack: return exec->r(virtualRegister().offset()).unboxedCell(); case BooleanDisplacedInJSStack: #if USE(JSVALUE64) return exec->r(virtualRegister().offset()).jsValue(); #else return jsBoolean(exec->r(virtualRegister().offset()).unboxedBoolean()); #endif case Constant: return constant(); default: RELEASE_ASSERT_NOT_REACHED(); return JSValue(); } }
void ValueSource::dump(PrintStream& out) const { switch (kind()) { case SourceNotSet: out.print("NotSet"); break; case SourceIsDead: out.print("IsDead"); break; case ValueInJSStack: out.print("JS:", virtualRegister()); break; case Int32InJSStack: out.print("Int32:", virtualRegister()); break; case Int52InJSStack: out.print("Int52:", virtualRegister()); break; case CellInJSStack: out.print("Cell:", virtualRegister()); break; case BooleanInJSStack: out.print("Bool:", virtualRegister()); break; case DoubleInJSStack: out.print("Double:", virtualRegister()); break; case HaveNode: out.print("Node(", m_value, ")"); break; default: RELEASE_ASSERT_NOT_REACHED(); break; } }
void VariableEvent::dumpSpillInfo(const char* name, PrintStream& out) const { out.print(name, "(", id(), ", r", virtualRegister(), ", ", dataFormatToString(dataFormat()), ")"); }
void ValueRecovery::dumpInContext(PrintStream& out, DumpContext* context) const { switch (technique()) { case InGPR: out.print(gpr()); return; case UnboxedInt32InGPR: out.print("int32(", gpr(), ")"); return; case UnboxedInt52InGPR: out.print("int52(", gpr(), ")"); return; case UnboxedStrictInt52InGPR: out.print("strictInt52(", gpr(), ")"); return; case UnboxedBooleanInGPR: out.print("bool(", gpr(), ")"); return; case UnboxedCellInGPR: out.print("cell(", gpr(), ")"); return; case UInt32InGPR: out.print("uint32(", gpr(), ")"); return; case InFPR: out.print(fpr()); return; #if USE(JSVALUE32_64) case InPair: out.print("pair(", tagGPR(), ", ", payloadGPR(), ")"); return; #endif case DisplacedInJSStack: out.printf("*%d", virtualRegister().offset()); return; case Int32DisplacedInJSStack: out.printf("*int32(%d)", virtualRegister().offset()); return; case Int52DisplacedInJSStack: out.printf("*int52(%d)", virtualRegister().offset()); return; case StrictInt52DisplacedInJSStack: out.printf("*strictInt52(%d)", virtualRegister().offset()); return; case DoubleDisplacedInJSStack: out.printf("*double(%d)", virtualRegister().offset()); return; case CellDisplacedInJSStack: out.printf("*cell(%d)", virtualRegister().offset()); return; case BooleanDisplacedInJSStack: out.printf("*bool(%d)", virtualRegister().offset()); return; case ArgumentsThatWereNotCreated: out.printf("arguments"); return; case Constant: out.print("[", inContext(constant(), context), "]"); return; case DontKnow: out.printf("!"); return; } RELEASE_ASSERT_NOT_REACHED(); }