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

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

Issue 1289643005: Rename accessors of class Field to make it more apparent as to what is being accessed - static fiel… (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: add-comment Created 5 years, 3 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_mips.cc ('k') | runtime/vm/intrinsifier_arm.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 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_X64. 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_X64.
6 #if defined(TARGET_ARCH_X64) 6 #if defined(TARGET_ARCH_X64)
7 7
8 #include "vm/intermediate_language.h" 8 #include "vm/intermediate_language.h"
9 9
10 #include "vm/dart_entry.h" 10 #include "vm/dart_entry.h"
(...skipping 1955 matching lines...) Expand 10 before | Expand all | Expand 10 after
1966 1966
1967 1967
1968 // When the parser is building an implicit static getter for optimization, 1968 // When the parser is building an implicit static getter for optimization,
1969 // it can generate a function body where deoptimization ids do not line up 1969 // it can generate a function body where deoptimization ids do not line up
1970 // with the unoptimized code. 1970 // with the unoptimized code.
1971 // 1971 //
1972 // This is safe only so long as LoadStaticFieldInstr cannot deoptimize. 1972 // This is safe only so long as LoadStaticFieldInstr cannot deoptimize.
1973 void LoadStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 1973 void LoadStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
1974 Register field = locs()->in(0).reg(); 1974 Register field = locs()->in(0).reg();
1975 Register result = locs()->out(0).reg(); 1975 Register result = locs()->out(0).reg();
1976 __ movq(result, FieldAddress(field, Field::value_offset())); 1976 __ movq(result, FieldAddress(field, Field::static_value_offset()));
1977 } 1977 }
1978 1978
1979 1979
1980 LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone, 1980 LocationSummary* StoreStaticFieldInstr::MakeLocationSummary(Zone* zone,
1981 bool opt) const { 1981 bool opt) const {
1982 LocationSummary* locs = new(zone) LocationSummary( 1982 LocationSummary* locs = new(zone) LocationSummary(
1983 zone, 1, 1, LocationSummary::kNoCall); 1983 zone, 1, 1, LocationSummary::kNoCall);
1984 locs->set_in(0, value()->NeedsStoreBuffer() ? Location::WritableRegister() 1984 locs->set_in(0, value()->NeedsStoreBuffer() ? Location::WritableRegister()
1985 : Location::RequiresRegister()); 1985 : Location::RequiresRegister());
1986 locs->set_temp(0, Location::RequiresRegister()); 1986 locs->set_temp(0, Location::RequiresRegister());
1987 return locs; 1987 return locs;
1988 } 1988 }
1989 1989
1990 1990
1991 void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 1991 void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
1992 Register value = locs()->in(0).reg(); 1992 Register value = locs()->in(0).reg();
1993 Register temp = locs()->temp(0).reg(); 1993 Register temp = locs()->temp(0).reg();
1994 1994
1995 __ LoadObject(temp, field()); 1995 __ LoadObject(temp, field());
1996 if (this->value()->NeedsStoreBuffer()) { 1996 if (this->value()->NeedsStoreBuffer()) {
1997 __ StoreIntoObject(temp, 1997 __ StoreIntoObject(temp,
1998 FieldAddress(temp, Field::value_offset()), value, CanValueBeSmi()); 1998 FieldAddress(temp, Field::static_value_offset()),
1999 value,
2000 CanValueBeSmi());
1999 } else { 2001 } else {
2000 __ StoreIntoObjectNoBarrier( 2002 __ StoreIntoObjectNoBarrier(
2001 temp, FieldAddress(temp, Field::value_offset()), value); 2003 temp, FieldAddress(temp, Field::static_value_offset()), value);
2002 } 2004 }
2003 } 2005 }
2004 2006
2005 2007
2006 LocationSummary* InstanceOfInstr::MakeLocationSummary(Zone* zone, 2008 LocationSummary* InstanceOfInstr::MakeLocationSummary(Zone* zone,
2007 bool opt) const { 2009 bool opt) const {
2008 const intptr_t kNumInputs = 3; 2010 const intptr_t kNumInputs = 3;
2009 const intptr_t kNumTemps = 0; 2011 const intptr_t kNumTemps = 0;
2010 LocationSummary* summary = new(zone) LocationSummary( 2012 LocationSummary* summary = new(zone) LocationSummary(
2011 zone, kNumInputs, kNumTemps, LocationSummary::kCall); 2013 zone, kNumInputs, kNumTemps, LocationSummary::kCall);
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
2482 return locs; 2484 return locs;
2483 } 2485 }
2484 2486
2485 2487
2486 void InitStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) { 2488 void InitStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
2487 Register field = locs()->in(0).reg(); 2489 Register field = locs()->in(0).reg();
2488 Register temp = locs()->temp(0).reg(); 2490 Register temp = locs()->temp(0).reg();
2489 2491
2490 Label call_runtime, no_call; 2492 Label call_runtime, no_call;
2491 2493
2492 __ movq(temp, FieldAddress(field, Field::value_offset())); 2494 __ movq(temp, FieldAddress(field, Field::static_value_offset()));
2493 __ CompareObject(temp, Object::sentinel()); 2495 __ CompareObject(temp, Object::sentinel());
2494 __ j(EQUAL, &call_runtime); 2496 __ j(EQUAL, &call_runtime);
2495 2497
2496 __ CompareObject(temp, Object::transition_sentinel()); 2498 __ CompareObject(temp, Object::transition_sentinel());
2497 __ j(NOT_EQUAL, &no_call); 2499 __ j(NOT_EQUAL, &no_call);
2498 2500
2499 __ Bind(&call_runtime); 2501 __ Bind(&call_runtime);
2500 __ PushObject(Object::null_object()); // Make room for (unused) result. 2502 __ PushObject(Object::null_object()); // Make room for (unused) result.
2501 __ pushq(field); 2503 __ pushq(field);
2502 compiler->GenerateRuntimeCall(token_pos(), 2504 compiler->GenerateRuntimeCall(token_pos(),
(...skipping 3937 matching lines...) Expand 10 before | Expand all | Expand 10 after
6440 __ Drop(1); 6442 __ Drop(1);
6441 __ popq(result); 6443 __ popq(result);
6442 } 6444 }
6443 6445
6444 6446
6445 } // namespace dart 6447 } // namespace dart
6446 6448
6447 #undef __ 6449 #undef __
6448 6450
6449 #endif // defined TARGET_ARCH_X64 6451 #endif // defined TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « runtime/vm/intermediate_language_mips.cc ('k') | runtime/vm/intrinsifier_arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698