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

Unified Diff: vm/stub_code_ia32.cc

Issue 9021025: Check all cases with "__ movl(FieldAddress" and converted them to StoreIntoObject where appropriate. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/runtime/
Patch Set: Created 9 years 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 | « vm/intrinsifier_ia32.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: vm/stub_code_ia32.cc
===================================================================
--- vm/stub_code_ia32.cc (revision 2709)
+++ vm/stub_code_ia32.cc (working copy)
@@ -659,16 +659,22 @@
// EDX: Array length as Smi.
// Store the type argument field.
- __ movl(FieldAddress(EAX, Array::type_arguments_offset()), ECX);
+ __ StoreIntoObject(EAX,
+ FieldAddress(EAX, Array::type_arguments_offset()),
+ ECX);
// Set the length field.
- __ movl(FieldAddress(EAX, Array::length_offset()), EDX);
+ __ StoreIntoObject(EAX,
+ FieldAddress(EAX, Array::length_offset()),
+ EDX);
// Store class value for array.
__ movl(ECX, FieldAddress(CTX, Context::isolate_offset()));
__ movl(ECX, Address(ECX, Isolate::object_store_offset()));
__ movl(ECX, Address(ECX, ObjectStore::array_class_offset()));
- __ movl(FieldAddress(EAX, Array::class_offset()), ECX);
+ __ StoreIntoObject(EAX,
+ FieldAddress(EAX, Array::class_offset()),
+ ECX);
__ movl(FieldAddress(EAX, Array::tags_offset()), Immediate(0)); // Tags.
// Initialize all array elements to raw_null.
@@ -969,12 +975,14 @@
// EAX: new object.
// EDX: number of context variables.
__ LoadObject(EBX, context_class); // Load up class field of context.
- __ movl(FieldAddress(EAX, Context::class_offset()), EBX);
+ __ StoreIntoObject(EAX,
+ FieldAddress(EAX, Context::class_offset()),
+ EBX);
__ movl(FieldAddress(EAX, Context::tags_offset()), Immediate(0)); // Tags.
// Setup up number of context variables field.
// EAX: new object.
- // EDX: number of context variables.
+ // EDX: number of context variables as integer value (not object).
__ movl(FieldAddress(EAX, Context::num_variables_offset()), EDX);
// Setup isolate field.
@@ -982,6 +990,7 @@
// EAX: new object.
// EDX: number of context variables.
__ movl(EBX, FieldAddress(CTX, Context::isolate_offset()));
+ // EBX: Isolate, not an object.
__ movl(FieldAddress(EAX, Context::isolate_offset()), EBX);
const Immediate raw_null =
« no previous file with comments | « vm/intrinsifier_ia32.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698