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

Side by Side Diff: runtime/vm/intermediate_language_arm.cc

Issue 2903993002: Remember deopt-id -> context-level mappings in var descriptors. (Closed)
Patch Set: update descriptor tests Created 3 years, 6 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
« no previous file with comments | « runtime/vm/intermediate_language.h ('k') | runtime/vm/intermediate_language_arm64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 2 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
3 // for details. All rights reserved. Use of this source code is governed by a 3 // for details. All rights reserved. Use of this source code is governed by a
4 // BSD-style license that can be found in the LICENSE file. 4 // BSD-style license that can be found in the LICENSE file.
5 5
6 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM. 6 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM.
7 #if defined(TARGET_ARCH_ARM) 7 #if defined(TARGET_ARCH_ARM)
8 8
9 #include "vm/intermediate_language.h" 9 #include "vm/intermediate_language.h"
10 10
(...skipping 7138 matching lines...) Expand 10 before | Expand all | Expand 10 after
7149 7149
7150 7150
7151 Condition StrictCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler, 7151 Condition StrictCompareInstr::EmitComparisonCode(FlowGraphCompiler* compiler,
7152 BranchLabels labels) { 7152 BranchLabels labels) {
7153 Location left = locs()->in(0); 7153 Location left = locs()->in(0);
7154 Location right = locs()->in(1); 7154 Location right = locs()->in(1);
7155 ASSERT(!left.IsConstant() || !right.IsConstant()); 7155 ASSERT(!left.IsConstant() || !right.IsConstant());
7156 Condition true_condition; 7156 Condition true_condition;
7157 if (left.IsConstant()) { 7157 if (left.IsConstant()) {
7158 true_condition = compiler->EmitEqualityRegConstCompare( 7158 true_condition = compiler->EmitEqualityRegConstCompare(
7159 right.reg(), left.constant(), needs_number_check(), token_pos()); 7159 right.reg(), left.constant(), needs_number_check(), token_pos(),
7160 deopt_id_);
7160 } else if (right.IsConstant()) { 7161 } else if (right.IsConstant()) {
7161 true_condition = compiler->EmitEqualityRegConstCompare( 7162 true_condition = compiler->EmitEqualityRegConstCompare(
7162 left.reg(), right.constant(), needs_number_check(), token_pos()); 7163 left.reg(), right.constant(), needs_number_check(), token_pos(),
7164 deopt_id_);
7163 } else { 7165 } else {
7164 true_condition = compiler->EmitEqualityRegRegCompare( 7166 true_condition = compiler->EmitEqualityRegRegCompare(
7165 left.reg(), right.reg(), needs_number_check(), token_pos()); 7167 left.reg(), right.reg(), needs_number_check(), token_pos(), deopt_id_);
7166 } 7168 }
7167 if (kind() != Token::kEQ_STRICT) { 7169 if (kind() != Token::kEQ_STRICT) {
7168 ASSERT(kind() == Token::kNE_STRICT); 7170 ASSERT(kind() == Token::kNE_STRICT);
7169 true_condition = NegateCondition(true_condition); 7171 true_condition = NegateCondition(true_condition);
7170 } 7172 }
7171 return true_condition; 7173 return true_condition;
7172 } 7174 }
7173 7175
7174 7176
7175 void StrictCompareInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 7177 void StrictCompareInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
7225 compiler->GenerateCall(token_pos(), stub_entry, RawPcDescriptors::kOther, 7227 compiler->GenerateCall(token_pos(), stub_entry, RawPcDescriptors::kOther,
7226 locs()); 7228 locs());
7227 compiler->AddStubCallTarget(stub); 7229 compiler->AddStubCallTarget(stub);
7228 __ Drop(ArgumentCount()); // Discard arguments. 7230 __ Drop(ArgumentCount()); // Discard arguments.
7229 } 7231 }
7230 7232
7231 7233
7232 void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 7234 void DebugStepCheckInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
7233 ASSERT(!compiler->is_optimizing()); 7235 ASSERT(!compiler->is_optimizing());
7234 __ BranchLinkPatchable(*StubCode::DebugStepCheck_entry()); 7236 __ BranchLinkPatchable(*StubCode::DebugStepCheck_entry());
7235 compiler->AddCurrentDescriptor(stub_kind_, Thread::kNoDeoptId, token_pos()); 7237 compiler->AddCurrentDescriptor(stub_kind_, deopt_id_, token_pos());
7236 compiler->RecordSafepoint(locs()); 7238 compiler->RecordSafepoint(locs());
7237 } 7239 }
7238 7240
7239 7241
7240 LocationSummary* GrowRegExpStackInstr::MakeLocationSummary(Zone* zone, 7242 LocationSummary* GrowRegExpStackInstr::MakeLocationSummary(Zone* zone,
7241 bool opt) const { 7243 bool opt) const {
7242 const intptr_t kNumInputs = 1; 7244 const intptr_t kNumInputs = 1;
7243 const intptr_t kNumTemps = 0; 7245 const intptr_t kNumTemps = 0;
7244 LocationSummary* locs = new (zone) 7246 LocationSummary* locs = new (zone)
7245 LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall); 7247 LocationSummary(zone, kNumInputs, kNumTemps, LocationSummary::kCall);
(...skipping 11 matching lines...) Expand all
7257 compiler->GenerateRuntimeCall(TokenPosition::kNoSource, deopt_id(), 7259 compiler->GenerateRuntimeCall(TokenPosition::kNoSource, deopt_id(),
7258 kGrowRegExpStackRuntimeEntry, 1, locs()); 7260 kGrowRegExpStackRuntimeEntry, 1, locs());
7259 __ Drop(1); 7261 __ Drop(1);
7260 __ Pop(result); 7262 __ Pop(result);
7261 } 7263 }
7262 7264
7263 7265
7264 } // namespace dart 7266 } // namespace dart
7265 7267
7266 #endif // defined TARGET_ARCH_ARM 7268 #endif // defined TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language.h ('k') | runtime/vm/intermediate_language_arm64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698