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

Side by Side Diff: src/ia32/macro-assembler-ia32.cc

Issue 6894003: Better support for 'polymorphic' JS and external arrays (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: merge with latest Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 bool is_heap_object) { 196 bool is_heap_object) {
197 if (!is_heap_object) { 197 if (!is_heap_object) {
198 test(obj, Immediate(kSmiTagMask)); 198 test(obj, Immediate(kSmiTagMask));
199 j(zero, fail); 199 j(zero, fail);
200 } 200 }
201 cmp(FieldOperand(obj, HeapObject::kMapOffset), Immediate(map)); 201 cmp(FieldOperand(obj, HeapObject::kMapOffset), Immediate(map));
202 j(not_equal, fail); 202 j(not_equal, fail);
203 } 203 }
204 204
205 205
206 void MacroAssembler::DispatchMap(Register obj,
207 Handle<Map> map,
208 Handle<Code> success,
209 bool is_heap_object) {
210 Label fail;
211 if (!is_heap_object) {
212 test(obj, Immediate(kSmiTagMask));
213 j(zero, &fail);
214 }
215 cmp(FieldOperand(obj, HeapObject::kMapOffset), Immediate(map));
216 j(equal, success, taken);
217
218 bind(&fail);
219 }
220
221
206 Condition MacroAssembler::IsObjectStringType(Register heap_object, 222 Condition MacroAssembler::IsObjectStringType(Register heap_object,
207 Register map, 223 Register map,
208 Register instance_type) { 224 Register instance_type) {
209 mov(map, FieldOperand(heap_object, HeapObject::kMapOffset)); 225 mov(map, FieldOperand(heap_object, HeapObject::kMapOffset));
210 movzx_b(instance_type, FieldOperand(map, Map::kInstanceTypeOffset)); 226 movzx_b(instance_type, FieldOperand(map, Map::kInstanceTypeOffset));
211 ASSERT(kNotStringTag != 0); 227 ASSERT(kNotStringTag != 0);
212 test(instance_type, Immediate(kIsNotStringMask)); 228 test(instance_type, Immediate(kIsNotStringMask));
213 return zero; 229 return zero;
214 } 230 }
215 231
(...skipping 1820 matching lines...) Expand 10 before | Expand all | Expand 10 after
2036 2052
2037 // Check that the code was patched as expected. 2053 // Check that the code was patched as expected.
2038 ASSERT(masm_.pc_ == address_ + size_); 2054 ASSERT(masm_.pc_ == address_ + size_);
2039 ASSERT(masm_.reloc_info_writer.pos() == address_ + size_ + Assembler::kGap); 2055 ASSERT(masm_.reloc_info_writer.pos() == address_ + size_ + Assembler::kGap);
2040 } 2056 }
2041 2057
2042 2058
2043 } } // namespace v8::internal 2059 } } // namespace v8::internal
2044 2060
2045 #endif // V8_TARGET_ARCH_IA32 2061 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698