| Index: src/mips/lithium-mips.cc
|
| diff --git a/src/mips/lithium-mips.cc b/src/mips/lithium-mips.cc
|
| index 18e89ddd5c047bd2beaf90b67b0678378af060fa..695a058e9e520b09ed87ac54ee5f215ee56eebe0 100644
|
| --- a/src/mips/lithium-mips.cc
|
| +++ b/src/mips/lithium-mips.cc
|
| @@ -265,6 +265,14 @@ void LTypeofIsAndBranch::PrintDataTo(StringStream* stream) {
|
| }
|
|
|
|
|
| +void LStoreCodeEntry::PrintDataTo(StringStream* stream) {
|
| + stream->Add(" = ");
|
| + function()->PrintTo(stream);
|
| + stream->Add(".code_entry = ");
|
| + code_object()->PrintTo(stream);
|
| +}
|
| +
|
| +
|
| void LInnerAllocatedObject::PrintDataTo(StringStream* stream) {
|
| stream->Add(" = ");
|
| base_object()->PrintTo(stream);
|
| @@ -1079,6 +1087,14 @@ LInstruction* LChunkBuilder::DoPushArgument(HPushArgument* instr) {
|
| }
|
|
|
|
|
| +LInstruction* LChunkBuilder::DoStoreCodeEntry(
|
| + HStoreCodeEntry* store_code_entry) {
|
| + LOperand* function = UseRegister(store_code_entry->function());
|
| + LOperand* code_object = UseTempRegister(store_code_entry->code_object());
|
| + return new(zone()) LStoreCodeEntry(function, code_object);
|
| +}
|
| +
|
| +
|
| LInstruction* LChunkBuilder::DoInnerAllocatedObject(
|
| HInnerAllocatedObject* inner_object) {
|
| LOperand* base_object = UseRegisterAtStart(inner_object->base_object());
|
| @@ -1775,13 +1791,6 @@ LInstruction* LChunkBuilder::DoBoundsCheckBaseIndexInformation(
|
| }
|
|
|
|
|
| -LInstruction* LChunkBuilder::DoAbnormalExit(HAbnormalExit* instr) {
|
| - // The control instruction marking the end of a block that completed
|
| - // abruptly (e.g., threw an exception). There is nothing specific to do.
|
| - return NULL;
|
| -}
|
| -
|
| -
|
| LInstruction* LChunkBuilder::DoThrow(HThrow* instr) {
|
| LOperand* value = UseFixed(instr->value(), a0);
|
| return MarkAsCall(new(zone()) LThrow(value), instr);
|
| @@ -1828,19 +1837,17 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
|
| ASSERT(to.IsInteger32());
|
| LOperand* value = NULL;
|
| LInstruction* res = NULL;
|
| - if (instr->value()->type().IsSmi()) {
|
| - value = UseRegisterAtStart(instr->value());
|
| + HValue* val = instr->value();
|
| + if (val->type().IsSmi() || val->representation().IsSmi()) {
|
| + value = UseRegisterAtStart(val);
|
| res = DefineAsRegister(new(zone()) LSmiUntag(value, false));
|
| } else {
|
| - value = UseRegister(instr->value());
|
| + value = UseRegister(val);
|
| LOperand* temp1 = TempRegister();
|
| - LOperand* temp2 = instr->CanTruncateToInt32() ? TempRegister()
|
| - : NULL;
|
| - LOperand* temp3 = FixedTemp(f22);
|
| + LOperand* temp2 = FixedTemp(f22);
|
| res = DefineSameAsFirst(new(zone()) LTaggedToI(value,
|
| temp1,
|
| - temp2,
|
| - temp3));
|
| + temp2));
|
| res = AssignEnvironment(res);
|
| }
|
| return res;
|
| @@ -1860,14 +1867,12 @@ LInstruction* LChunkBuilder::DoChange(HChange* instr) {
|
| return AssignPointerMap(result);
|
| } else if (to.IsSmi()) {
|
| LOperand* value = UseRegister(instr->value());
|
| - return AssignEnvironment(DefineAsRegister(new(zone()) LDoubleToSmi(value,
|
| - TempRegister(), TempRegister())));
|
| + return AssignEnvironment(
|
| + DefineAsRegister(new(zone()) LDoubleToSmi(value)));
|
| } else {
|
| ASSERT(to.IsInteger32());
|
| LOperand* value = UseRegister(instr->value());
|
| - LOperand* temp1 = TempRegister();
|
| - LOperand* temp2 = instr->CanTruncateToInt32() ? TempRegister() : NULL;
|
| - LDoubleToI* res = new(zone()) LDoubleToI(value, temp1, temp2);
|
| + LDoubleToI* res = new(zone()) LDoubleToI(value);
|
| return AssignEnvironment(DefineAsRegister(res));
|
| }
|
| } else if (from.IsInteger32()) {
|
| @@ -1934,9 +1939,9 @@ LInstruction* LChunkBuilder::DoCheckInstanceType(HCheckInstanceType* instr) {
|
| }
|
|
|
|
|
| -LInstruction* LChunkBuilder::DoCheckFunction(HCheckFunction* instr) {
|
| +LInstruction* LChunkBuilder::DoCheckValue(HCheckValue* instr) {
|
| LOperand* value = UseRegisterAtStart(instr->value());
|
| - return AssignEnvironment(new(zone()) LCheckFunction(value));
|
| + return AssignEnvironment(new(zone()) LCheckValue(value));
|
| }
|
|
|
|
|
|
|