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

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

Issue 19528003: Unify SoftDeoptimize and Deoptimize hydrogen instructions (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Use defaults for Add<HDeoptimize> Created 7 years, 5 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
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 993 matching lines...) Expand 10 before | Expand all | Expand 10 after
1004 1004
1005 void LCodeGen::DeoptimizeIf(Condition cc, 1005 void LCodeGen::DeoptimizeIf(Condition cc,
1006 LEnvironment* environment) { 1006 LEnvironment* environment) {
1007 Deoptimizer::BailoutType bailout_type = info()->IsStub() 1007 Deoptimizer::BailoutType bailout_type = info()->IsStub()
1008 ? Deoptimizer::LAZY 1008 ? Deoptimizer::LAZY
1009 : Deoptimizer::EAGER; 1009 : Deoptimizer::EAGER;
1010 DeoptimizeIf(cc, environment, bailout_type); 1010 DeoptimizeIf(cc, environment, bailout_type);
1011 } 1011 }
1012 1012
1013 1013
1014 void LCodeGen::SoftDeoptimize(LEnvironment* environment) { 1014 void LCodeGen::Deoptimize(LEnvironment* environment) {
1015 ASSERT(!info()->IsStub()); 1015 ASSERT(!info()->IsStub());
1016 DeoptimizeIf(no_condition, environment, Deoptimizer::SOFT); 1016 DeoptimizeIf(no_condition, environment, Deoptimizer::SOFT);
1017 } 1017 }
1018 1018
1019 1019
1020 void LCodeGen::RegisterDependentCodeForEmbeddedMaps(Handle<Code> code) { 1020 void LCodeGen::RegisterDependentCodeForEmbeddedMaps(Handle<Code> code) {
1021 ZoneList<Handle<Map> > maps(1, zone()); 1021 ZoneList<Handle<Map> > maps(1, zone());
1022 int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT); 1022 int mode_mask = RelocInfo::ModeMask(RelocInfo::EMBEDDED_OBJECT);
1023 for (RelocIterator it(*code, mode_mask); !it.done(); it.next()) { 1023 for (RelocIterator it(*code, mode_mask); !it.done(); it.next()) {
1024 RelocInfo::Mode mode = it.rinfo()->rmode(); 1024 RelocInfo::Mode mode = it.rinfo()->rmode();
(...skipping 5287 matching lines...) Expand 10 before | Expand all | Expand 10 after
6312 void LCodeGen::DoLazyBailout(LLazyBailout* instr) { 6312 void LCodeGen::DoLazyBailout(LLazyBailout* instr) {
6313 EnsureSpaceForLazyDeopt(); 6313 EnsureSpaceForLazyDeopt();
6314 ASSERT(instr->HasEnvironment()); 6314 ASSERT(instr->HasEnvironment());
6315 LEnvironment* env = instr->environment(); 6315 LEnvironment* env = instr->environment();
6316 RegisterEnvironmentForDeoptimization(env, Safepoint::kLazyDeopt); 6316 RegisterEnvironmentForDeoptimization(env, Safepoint::kLazyDeopt);
6317 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index()); 6317 safepoints_.RecordLazyDeoptimizationIndex(env->deoptimization_index());
6318 } 6318 }
6319 6319
6320 6320
6321 void LCodeGen::DoDeoptimize(LDeoptimize* instr) { 6321 void LCodeGen::DoDeoptimize(LDeoptimize* instr) {
6322 if (instr->hydrogen_value()->IsSoftDeoptimize()) { 6322 ASSERT(instr->hydrogen_value()->IsDeoptimize());
Jakob Kummerow 2013/07/22 16:53:12 This explicit ASSERT is unnecessary, as "instr->hy
danno 2013/07/23 12:18:14 Done.
6323 SoftDeoptimize(instr->environment()); 6323 if (instr->hydrogen()->type() == Deoptimizer::SOFT) {
6324 Deoptimize(instr->environment());
Jakob Kummerow 2013/07/22 16:53:12 I think I'd prefer to extend Deoptimize()'s signat
danno 2013/07/23 12:18:14 Done
6324 } else { 6325 } else {
6325 DeoptimizeIf(no_condition, instr->environment()); 6326 DeoptimizeIf(no_condition, instr->environment());
6326 } 6327 }
6327 } 6328 }
6328 6329
6329 6330
6330 void LCodeGen::DoDummyUse(LDummyUse* instr) { 6331 void LCodeGen::DoDummyUse(LDummyUse* instr) {
6331 // Nothing to see here, move on! 6332 // Nothing to see here, move on!
6332 } 6333 }
6333 6334
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
6497 FixedArray::kHeaderSize - kPointerSize)); 6498 FixedArray::kHeaderSize - kPointerSize));
6498 __ bind(&done); 6499 __ bind(&done);
6499 } 6500 }
6500 6501
6501 6502
6502 #undef __ 6503 #undef __
6503 6504
6504 } } // namespace v8::internal 6505 } } // namespace v8::internal
6505 6506
6506 #endif // V8_TARGET_ARCH_IA32 6507 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698