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

Side by Side Diff: src/full-codegen/mips/full-codegen-mips.cc

Issue 1631583002: [for-in] Further refactorings and unification around for-in. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 11 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if V8_TARGET_ARCH_MIPS 5 #if V8_TARGET_ARCH_MIPS
6 6
7 // Note on Mips implementation: 7 // Note on Mips implementation:
8 // 8 //
9 // The result_register() for mips is the 'v0' register, which is defined 9 // The result_register() for mips is the 'v0' register, which is defined
10 // by the ABI to contain function return values. However, the first 10 // by the ABI to contain function return values. However, the first
(...skipping 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after
1072 1072
1073 // The enum cache is valid. Load the map of the object being 1073 // The enum cache is valid. Load the map of the object being
1074 // iterated over and use the cache for the iteration. 1074 // iterated over and use the cache for the iteration.
1075 Label use_cache; 1075 Label use_cache;
1076 __ lw(v0, FieldMemOperand(a0, HeapObject::kMapOffset)); 1076 __ lw(v0, FieldMemOperand(a0, HeapObject::kMapOffset));
1077 __ Branch(&use_cache); 1077 __ Branch(&use_cache);
1078 1078
1079 // Get the set of properties to enumerate. 1079 // Get the set of properties to enumerate.
1080 __ bind(&call_runtime); 1080 __ bind(&call_runtime);
1081 __ push(a0); // Duplicate the enumerable object on the stack. 1081 __ push(a0); // Duplicate the enumerable object on the stack.
1082 __ CallRuntime(Runtime::kGetPropertyNamesFast); 1082 __ CallRuntime(Runtime::kForInEnumerate);
1083 PrepareForBailoutForId(stmt->EnumId(), TOS_REG); 1083 PrepareForBailoutForId(stmt->EnumId(), TOS_REG);
1084 1084
1085 // If we got a map from the runtime call, we can do a fast 1085 // If we got a map from the runtime call, we can do a fast
1086 // modification check. Otherwise, we got a fixed array, and we have 1086 // modification check. Otherwise, we got a fixed array, and we have
1087 // to do a slow check. 1087 // to do a slow check.
1088 Label fixed_array; 1088 Label fixed_array;
1089 __ lw(a2, FieldMemOperand(v0, HeapObject::kMapOffset)); 1089 __ lw(a2, FieldMemOperand(v0, HeapObject::kMapOffset));
1090 __ LoadRoot(at, Heap::kMetaMapRootIndex); 1090 __ LoadRoot(at, Heap::kMetaMapRootIndex);
1091 __ Branch(&fixed_array, ne, a2, Operand(at)); 1091 __ Branch(&fixed_array, ne, a2, Operand(at));
1092 1092
(...skipping 3710 matching lines...) Expand 10 before | Expand all | Expand 10 after
4803 reinterpret_cast<uint32_t>( 4803 reinterpret_cast<uint32_t>(
4804 isolate->builtins()->OsrAfterStackCheck()->entry())); 4804 isolate->builtins()->OsrAfterStackCheck()->entry()));
4805 return OSR_AFTER_STACK_CHECK; 4805 return OSR_AFTER_STACK_CHECK;
4806 } 4806 }
4807 4807
4808 4808
4809 } // namespace internal 4809 } // namespace internal
4810 } // namespace v8 4810 } // namespace v8
4811 4811
4812 #endif // V8_TARGET_ARCH_MIPS 4812 #endif // V8_TARGET_ARCH_MIPS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698