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

Unified Diff: runtime/vm/stub_code_ia32.cc

Issue 10458031: In generated code for x64 don't load object's class directly from class_ field. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Eliminate CoreClass helpers on ia32/x64 and use class ids for array classes. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/opt_code_generator_ia32.cc ('k') | runtime/vm/stub_code_x64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/stub_code_ia32.cc
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
index 2fb028957181789309098f9c087ae1847b608cc0..6db9921660322b95e6933563fcb083f4ad70a13c 100644
--- a/runtime/vm/stub_code_ia32.cc
+++ b/runtime/vm/stub_code_ia32.cc
@@ -295,7 +295,7 @@ static void MegamorphicLookup(Assembler* assembler) {
__ j(EQUAL, &null_receiver, Assembler::kNearJump);
__ testl(EAX, Immediate(kSmiTagMask));
__ j(ZERO, &smi_receiver, Assembler::kNearJump);
- __ LoadClassOfObject(EAX, EAX, EDI);
+ __ LoadClass(EAX, EAX, EDI);
__ jmp(&class_in_eax, Assembler::kNearJump);
__ Bind(&smi_receiver);
// For Smis we need to get the class from the isolate.
@@ -772,7 +772,7 @@ void StubCode::GenerateCallClosureFunctionStub(Assembler* assembler) {
__ j(ZERO, &not_closure, Assembler::kNearJump); // Not a closure, but a smi.
// Verify that the class of the object is a closure class by checking that
// class.signature_function() is not null.
- __ LoadClassOfObject(EAX, EDI, ECX);
+ __ LoadClass(EAX, EDI, ECX);
__ movl(EAX, FieldAddress(EAX, Class::signature_function_offset()));
__ cmpl(EAX, raw_null);
// Actual class is not a closure class.
@@ -1591,7 +1591,6 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(Assembler* assembler,
#endif // DEBUG
// Loop that checks if there is an IC data match.
- // EAX: receiver's class.
// ECX: IC data object (preserved).
__ movl(EBX, FieldAddress(ECX, ICData::ic_data_offset()));
// EBX: ic_data_array with check entries: classes and target functions.
@@ -1697,7 +1696,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(Assembler* assembler,
__ ret();
__ Bind(&not_smi);
- __ LoadClassOfObject(EAX, EAX, EDI);
+ __ LoadClass(EAX, EAX, EDI);
__ ret();
}
@@ -1803,7 +1802,7 @@ static void GenerateSubtypeNTestCacheStub(Assembler* assembler, int n) {
const Immediate raw_null =
Immediate(reinterpret_cast<intptr_t>(Object::null()));
__ movl(EAX, Address(ESP, kInstanceOffsetInBytes));
- __ LoadClassOfObject(ECX, EAX, EBX);
+ __ LoadClass(ECX, EAX, EBX);
// EAX: instance, ECX: instance-class.
// Get instance type arguments
if (n > 1) {
« no previous file with comments | « runtime/vm/opt_code_generator_ia32.cc ('k') | runtime/vm/stub_code_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698