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

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

Issue 10170030: Implement tracking and optimizations of packed arrays (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Review feedback 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/ia32/lithium-ia32.cc ('k') | src/ia32/macro-assembler-ia32.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
228 void LoadTransitionedArrayMapConditional( 228 void LoadTransitionedArrayMapConditional(
229 ElementsKind expected_kind, 229 ElementsKind expected_kind,
230 ElementsKind transitioned_kind, 230 ElementsKind transitioned_kind,
231 Register map_in_out, 231 Register map_in_out,
232 Register scratch, 232 Register scratch,
233 Label* no_map_match); 233 Label* no_map_match);
234 234
235 // Load the initial map for new Arrays from a JSFunction. 235 // Load the initial map for new Arrays from a JSFunction.
236 void LoadInitialArrayMap(Register function_in, 236 void LoadInitialArrayMap(Register function_in,
237 Register scratch, 237 Register scratch,
238 Register map_out); 238 Register map_out,
239 bool can_have_holes);
239 240
240 // Load the global function with the given index. 241 // Load the global function with the given index.
241 void LoadGlobalFunction(int index, Register function); 242 void LoadGlobalFunction(int index, Register function);
242 243
243 // Load the initial map from the global function. The registers 244 // Load the initial map from the global function. The registers
244 // function and map can be the same. 245 // function and map can be the same.
245 void LoadGlobalFunctionInitialMap(Register function, Register map); 246 void LoadGlobalFunctionInitialMap(Register function, Register map);
246 247
247 // Push and pop the registers that can hold pointers. 248 // Push and pop the registers that can hold pointers.
248 void PushSafepointRegisters() { pushad(); } 249 void PushSafepointRegisters() { pushad(); }
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 Label::Distance distance = Label::kFar); 351 Label::Distance distance = Label::kFar);
351 352
352 // Check if a map for a JSObject indicates that the object can have both smi 353 // Check if a map for a JSObject indicates that the object can have both smi
353 // and HeapObject elements. Jump to the specified label if it does not. 354 // and HeapObject elements. Jump to the specified label if it does not.
354 void CheckFastObjectElements(Register map, 355 void CheckFastObjectElements(Register map,
355 Label* fail, 356 Label* fail,
356 Label::Distance distance = Label::kFar); 357 Label::Distance distance = Label::kFar);
357 358
358 // Check if a map for a JSObject indicates that the object has fast smi only 359 // Check if a map for a JSObject indicates that the object has fast smi only
359 // elements. Jump to the specified label if it does not. 360 // elements. Jump to the specified label if it does not.
360 void CheckFastSmiOnlyElements(Register map, 361 void CheckFastSmiElements(Register map,
361 Label* fail, 362 Label* fail,
362 Label::Distance distance = Label::kFar); 363 Label::Distance distance = Label::kFar);
363 364
364 // Check to see if maybe_number can be stored as a double in 365 // Check to see if maybe_number can be stored as a double in
365 // FastDoubleElements. If it can, store it at the index specified by key in 366 // FastDoubleElements. If it can, store it at the index specified by key in
366 // the FastDoubleElements array elements, otherwise jump to fail. 367 // the FastDoubleElements array elements, otherwise jump to fail.
367 void StoreNumberToDoubleElements(Register maybe_number, 368 void StoreNumberToDoubleElements(Register maybe_number,
368 Register elements, 369 Register elements,
369 Register key, 370 Register key,
370 Register scratch1, 371 Register scratch1,
371 XMMRegister scratch2, 372 XMMRegister scratch2,
372 Label* fail, 373 Label* fail,
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 } \ 970 } \
970 masm-> 971 masm->
971 #else 972 #else
972 #define ACCESS_MASM(masm) masm-> 973 #define ACCESS_MASM(masm) masm->
973 #endif 974 #endif
974 975
975 976
976 } } // namespace v8::internal 977 } } // namespace v8::internal
977 978
978 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ 979 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_
OLDNEW
« no previous file with comments | « src/ia32/lithium-ia32.cc ('k') | src/ia32/macro-assembler-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698