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

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

Issue 9372063: MIPS: Enable serialization for MIPS architecture. (Closed)
Patch Set: Rework on serialization handling of root references. Created 8 years, 9 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
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 2064 matching lines...) Expand 10 before | Expand all | Expand 10 after
2075 // root array to force relocation to be able to later patch with 2075 // root array to force relocation to be able to later patch with
2076 // the cached map. 2076 // the cached map.
2077 Handle<JSGlobalPropertyCell> cell = 2077 Handle<JSGlobalPropertyCell> cell =
2078 factory()->NewJSGlobalPropertyCell(factory()->the_hole_value()); 2078 factory()->NewJSGlobalPropertyCell(factory()->the_hole_value());
2079 __ li(at, Operand(Handle<Object>(cell))); 2079 __ li(at, Operand(Handle<Object>(cell)));
2080 __ lw(at, FieldMemOperand(at, JSGlobalPropertyCell::kValueOffset)); 2080 __ lw(at, FieldMemOperand(at, JSGlobalPropertyCell::kValueOffset));
2081 __ Branch(&cache_miss, ne, map, Operand(at)); 2081 __ Branch(&cache_miss, ne, map, Operand(at));
2082 // We use Factory::the_hole_value() on purpose instead of loading from the 2082 // We use Factory::the_hole_value() on purpose instead of loading from the
2083 // root array to force relocation to be able to later patch 2083 // root array to force relocation to be able to later patch
2084 // with true or false. 2084 // with true or false.
2085 __ li(result, Operand(factory()->the_hole_value()), true); 2085 __ li(result, Operand(factory()->the_hole_value()), CONSTANT_SIZE);
2086 __ Branch(&done); 2086 __ Branch(&done);
2087 2087
2088 // The inlined call site cache did not match. Check null and string before 2088 // The inlined call site cache did not match. Check null and string before
2089 // calling the deferred code. 2089 // calling the deferred code.
2090 __ bind(&cache_miss); 2090 __ bind(&cache_miss);
2091 // Null is not instance of anything. 2091 // Null is not instance of anything.
2092 __ LoadRoot(temp, Heap::kNullValueRootIndex); 2092 __ LoadRoot(temp, Heap::kNullValueRootIndex);
2093 __ Branch(&false_result, eq, object, Operand(temp)); 2093 __ Branch(&false_result, eq, object, Operand(temp));
2094 2094
2095 // String values is not instance of anything. 2095 // String values is not instance of anything.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
2130 // offset to the location of the map check. 2130 // offset to the location of the map check.
2131 Register temp = ToRegister(instr->TempAt(0)); 2131 Register temp = ToRegister(instr->TempAt(0));
2132 ASSERT(temp.is(t0)); 2132 ASSERT(temp.is(t0));
2133 __ LoadHeapObject(InstanceofStub::right(), instr->function()); 2133 __ LoadHeapObject(InstanceofStub::right(), instr->function());
2134 static const int kAdditionalDelta = 7; 2134 static const int kAdditionalDelta = 7;
2135 int delta = masm_->InstructionsGeneratedSince(map_check) + kAdditionalDelta; 2135 int delta = masm_->InstructionsGeneratedSince(map_check) + kAdditionalDelta;
2136 Label before_push_delta; 2136 Label before_push_delta;
2137 __ bind(&before_push_delta); 2137 __ bind(&before_push_delta);
2138 { 2138 {
2139 Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_); 2139 Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_);
2140 __ li(temp, Operand(delta * kPointerSize), true); 2140 __ li(temp, Operand(delta * kPointerSize), CONSTANT_SIZE);
2141 __ StoreToSafepointRegisterSlot(temp, temp); 2141 __ StoreToSafepointRegisterSlot(temp, temp);
2142 } 2142 }
2143 CallCodeGeneric(stub.GetCode(), 2143 CallCodeGeneric(stub.GetCode(),
2144 RelocInfo::CODE_TARGET, 2144 RelocInfo::CODE_TARGET,
2145 instr, 2145 instr,
2146 RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS); 2146 RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
2147 ASSERT(instr->HasDeoptimizationEnvironment()); 2147 ASSERT(instr->HasDeoptimizationEnvironment());
2148 LEnvironment* env = instr->deoptimization_environment(); 2148 LEnvironment* env = instr->deoptimization_environment();
2149 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index()); 2149 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index());
2150 // Put the result value into the result register slot and 2150 // Put the result value into the result register slot and
(...skipping 2895 matching lines...) Expand 10 before | Expand all | Expand 10 after
5046 __ Subu(scratch, result, scratch); 5046 __ Subu(scratch, result, scratch);
5047 __ lw(result, FieldMemOperand(scratch, 5047 __ lw(result, FieldMemOperand(scratch,
5048 FixedArray::kHeaderSize - kPointerSize)); 5048 FixedArray::kHeaderSize - kPointerSize));
5049 __ bind(&done); 5049 __ bind(&done);
5050 } 5050 }
5051 5051
5052 5052
5053 #undef __ 5053 #undef __
5054 5054
5055 } } // namespace v8::internal 5055 } } // namespace v8::internal
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698