Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(447)

Side by Side Diff: src/mips/lithium-codegen-mips.cc

Issue 10233019: MIPS: Reduce size of LIR instruction by one word and remove dead code. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased on r11482 Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 2121 matching lines...) Expand 10 before | Expand all | Expand 10 after
2132 __ bind(&before_push_delta); 2132 __ bind(&before_push_delta);
2133 { 2133 {
2134 Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_); 2134 Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_);
2135 __ li(temp, Operand(delta * kPointerSize), CONSTANT_SIZE); 2135 __ li(temp, Operand(delta * kPointerSize), CONSTANT_SIZE);
2136 __ StoreToSafepointRegisterSlot(temp, temp); 2136 __ StoreToSafepointRegisterSlot(temp, temp);
2137 } 2137 }
2138 CallCodeGeneric(stub.GetCode(), 2138 CallCodeGeneric(stub.GetCode(),
2139 RelocInfo::CODE_TARGET, 2139 RelocInfo::CODE_TARGET,
2140 instr, 2140 instr,
2141 RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS); 2141 RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
2142 ASSERT(instr->HasDeoptimizationEnvironment()); 2142 LEnvironment* env = instr->GetDeferredLazyDeoptimizationEnvironment();
2143 LEnvironment* env = instr->deoptimization_environment();
2144 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index()); 2143 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index());
2145 // Put the result value into the result register slot and 2144 // Put the result value into the result register slot and
2146 // restore all registers. 2145 // restore all registers.
2147 __ StoreToSafepointRegisterSlot(result, result); 2146 __ StoreToSafepointRegisterSlot(result, result);
2148 } 2147 }
2149 2148
2150 2149
2151 void LCodeGen::DoCmpT(LCmpT* instr) { 2150 void LCodeGen::DoCmpT(LCmpT* instr) {
2152 Token::Value op = instr->op(); 2151 Token::Value op = instr->op();
2153 2152
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
2765 __ sll(scratch, length, 2); 2764 __ sll(scratch, length, 2);
2766 __ bind(&loop); 2765 __ bind(&loop);
2767 __ Addu(scratch, elements, scratch); 2766 __ Addu(scratch, elements, scratch);
2768 __ lw(scratch, MemOperand(scratch)); 2767 __ lw(scratch, MemOperand(scratch));
2769 __ push(scratch); 2768 __ push(scratch);
2770 __ Subu(length, length, Operand(1)); 2769 __ Subu(length, length, Operand(1));
2771 __ Branch(USE_DELAY_SLOT, &loop, ne, length, Operand(zero_reg)); 2770 __ Branch(USE_DELAY_SLOT, &loop, ne, length, Operand(zero_reg));
2772 __ sll(scratch, length, 2); 2771 __ sll(scratch, length, 2);
2773 2772
2774 __ bind(&invoke); 2773 __ bind(&invoke);
2775 ASSERT(instr->HasPointerMap() && instr->HasDeoptimizationEnvironment()); 2774 ASSERT(instr->HasPointerMap());
2776 LPointerMap* pointers = instr->pointer_map(); 2775 LPointerMap* pointers = instr->pointer_map();
2777 RecordPosition(pointers->position()); 2776 RecordPosition(pointers->position());
2778 SafepointGenerator safepoint_generator( 2777 SafepointGenerator safepoint_generator(
2779 this, pointers, Safepoint::kLazyDeopt); 2778 this, pointers, Safepoint::kLazyDeopt);
2780 // The number of arguments is stored in receiver which is a0, as expected 2779 // The number of arguments is stored in receiver which is a0, as expected
2781 // by InvokeFunction. 2780 // by InvokeFunction.
2782 ParameterCount actual(receiver); 2781 ParameterCount actual(receiver);
2783 __ InvokeFunction(function, actual, CALL_FUNCTION, 2782 __ InvokeFunction(function, actual, CALL_FUNCTION,
2784 safepoint_generator, CALL_AS_METHOD); 2783 safepoint_generator, CALL_AS_METHOD);
2785 __ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 2784 __ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
3329 default: 3328 default:
3330 Abort("Unimplemented type of LUnaryMathOperation."); 3329 Abort("Unimplemented type of LUnaryMathOperation.");
3331 UNREACHABLE(); 3330 UNREACHABLE();
3332 } 3331 }
3333 } 3332 }
3334 3333
3335 3334
3336 void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) { 3335 void LCodeGen::DoInvokeFunction(LInvokeFunction* instr) {
3337 ASSERT(ToRegister(instr->function()).is(a1)); 3336 ASSERT(ToRegister(instr->function()).is(a1));
3338 ASSERT(instr->HasPointerMap()); 3337 ASSERT(instr->HasPointerMap());
3339 ASSERT(instr->HasDeoptimizationEnvironment());
3340 3338
3341 if (instr->known_function().is_null()) { 3339 if (instr->known_function().is_null()) {
3342 LPointerMap* pointers = instr->pointer_map(); 3340 LPointerMap* pointers = instr->pointer_map();
3343 RecordPosition(pointers->position()); 3341 RecordPosition(pointers->position());
3344 SafepointGenerator generator(this, pointers, Safepoint::kLazyDeopt); 3342 SafepointGenerator generator(this, pointers, Safepoint::kLazyDeopt);
3345 ParameterCount count(instr->arity()); 3343 ParameterCount count(instr->arity());
3346 __ InvokeFunction(a1, count, CALL_FUNCTION, generator, CALL_AS_METHOD); 3344 __ InvokeFunction(a1, count, CALL_FUNCTION, generator, CALL_AS_METHOD);
3347 __ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); 3345 __ lw(cp, MemOperand(fp, StandardFrameConstants::kContextOffset));
3348 } else { 3346 } else {
3349 CallKnownFunction(instr->known_function(), 3347 CallKnownFunction(instr->known_function(),
(...skipping 1598 matching lines...) Expand 10 before | Expand all | Expand 10 after
4948 DeoptimizeIf(al, instr->environment(), zero_reg, Operand(zero_reg)); 4946 DeoptimizeIf(al, instr->environment(), zero_reg, Operand(zero_reg));
4949 } 4947 }
4950 4948
4951 4949
4952 void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) { 4950 void LCodeGen::DoDeleteProperty(LDeleteProperty* instr) {
4953 Register object = ToRegister(instr->object()); 4951 Register object = ToRegister(instr->object());
4954 Register key = ToRegister(instr->key()); 4952 Register key = ToRegister(instr->key());
4955 Register strict = scratch0(); 4953 Register strict = scratch0();
4956 __ li(strict, Operand(Smi::FromInt(strict_mode_flag()))); 4954 __ li(strict, Operand(Smi::FromInt(strict_mode_flag())));
4957 __ Push(object, key, strict); 4955 __ Push(object, key, strict);
4958 ASSERT(instr->HasPointerMap() && instr->HasDeoptimizationEnvironment()); 4956 ASSERT(instr->HasPointerMap());
4959 LPointerMap* pointers = instr->pointer_map(); 4957 LPointerMap* pointers = instr->pointer_map();
4960 RecordPosition(pointers->position()); 4958 RecordPosition(pointers->position());
4961 SafepointGenerator safepoint_generator( 4959 SafepointGenerator safepoint_generator(
4962 this, pointers, Safepoint::kLazyDeopt); 4960 this, pointers, Safepoint::kLazyDeopt);
4963 __ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, safepoint_generator); 4961 __ InvokeBuiltin(Builtins::DELETE, CALL_FUNCTION, safepoint_generator);
4964 } 4962 }
4965 4963
4966 4964
4967 void LCodeGen::DoIn(LIn* instr) { 4965 void LCodeGen::DoIn(LIn* instr) {
4968 Register obj = ToRegister(instr->object()); 4966 Register obj = ToRegister(instr->object());
4969 Register key = ToRegister(instr->key()); 4967 Register key = ToRegister(instr->key());
4970 __ Push(key, obj); 4968 __ Push(key, obj);
4971 ASSERT(instr->HasPointerMap() && instr->HasDeoptimizationEnvironment()); 4969 ASSERT(instr->HasPointerMap());
4972 LPointerMap* pointers = instr->pointer_map(); 4970 LPointerMap* pointers = instr->pointer_map();
4973 RecordPosition(pointers->position()); 4971 RecordPosition(pointers->position());
4974 SafepointGenerator safepoint_generator(this, pointers, Safepoint::kLazyDeopt); 4972 SafepointGenerator safepoint_generator(this, pointers, Safepoint::kLazyDeopt);
4975 __ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator); 4973 __ InvokeBuiltin(Builtins::IN, CALL_FUNCTION, safepoint_generator);
4976 } 4974 }
4977 4975
4978 4976
4979 void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) { 4977 void LCodeGen::DoDeferredStackCheck(LStackCheck* instr) {
4980 PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters); 4978 PushSafepointRegistersScope scope(this, Safepoint::kWithRegisters);
4981 __ CallRuntimeSaveDoubles(Runtime::kStackGuard); 4979 __ CallRuntimeSaveDoubles(Runtime::kStackGuard);
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
5127 __ Subu(scratch, result, scratch); 5125 __ Subu(scratch, result, scratch);
5128 __ lw(result, FieldMemOperand(scratch, 5126 __ lw(result, FieldMemOperand(scratch,
5129 FixedArray::kHeaderSize - kPointerSize)); 5127 FixedArray::kHeaderSize - kPointerSize));
5130 __ bind(&done); 5128 __ bind(&done);
5131 } 5129 }
5132 5130
5133 5131
5134 #undef __ 5132 #undef __
5135 5133
5136 } } // namespace v8::internal 5134 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698