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

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

Issue 7348008: Merge up to 8597 to experimental/gc from the bleeding edge. (Closed) Base URL: http://v8.googlecode.com/svn/branches/experimental/gc/
Patch Set: '' Created 9 years, 5 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/x64/lithium-x64.cc ('k') | src/x64/macro-assembler-x64.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 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 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 // Setup call kind marking in rcx. The method takes rcx as an 326 // Setup call kind marking in rcx. The method takes rcx as an
327 // explicit first parameter to make the code more readable at the 327 // explicit first parameter to make the code more readable at the
328 // call sites. 328 // call sites.
329 void SetCallKind(Register dst, CallKind kind); 329 void SetCallKind(Register dst, CallKind kind);
330 330
331 // Invoke the JavaScript function code by either calling or jumping. 331 // Invoke the JavaScript function code by either calling or jumping.
332 void InvokeCode(Register code, 332 void InvokeCode(Register code,
333 const ParameterCount& expected, 333 const ParameterCount& expected,
334 const ParameterCount& actual, 334 const ParameterCount& actual,
335 InvokeFlag flag, 335 InvokeFlag flag,
336 const CallWrapper& call_wrapper = NullCallWrapper(), 336 const CallWrapper& call_wrapper,
337 CallKind call_kind = CALL_AS_METHOD); 337 CallKind call_kind);
338 338
339 void InvokeCode(Handle<Code> code, 339 void InvokeCode(Handle<Code> code,
340 const ParameterCount& expected, 340 const ParameterCount& expected,
341 const ParameterCount& actual, 341 const ParameterCount& actual,
342 RelocInfo::Mode rmode, 342 RelocInfo::Mode rmode,
343 InvokeFlag flag, 343 InvokeFlag flag,
344 const CallWrapper& call_wrapper = NullCallWrapper(), 344 const CallWrapper& call_wrapper,
345 CallKind call_kind = CALL_AS_METHOD); 345 CallKind call_kind);
346 346
347 // Invoke the JavaScript function in the given register. Changes the 347 // Invoke the JavaScript function in the given register. Changes the
348 // current context to the context in the function before invoking. 348 // current context to the context in the function before invoking.
349 void InvokeFunction(Register function, 349 void InvokeFunction(Register function,
350 const ParameterCount& actual, 350 const ParameterCount& actual,
351 InvokeFlag flag, 351 InvokeFlag flag,
352 const CallWrapper& call_wrapper = NullCallWrapper(), 352 const CallWrapper& call_wrapper,
353 CallKind call_kind = CALL_AS_METHOD); 353 CallKind call_kind);
354 354
355 void InvokeFunction(JSFunction* function, 355 void InvokeFunction(JSFunction* function,
356 const ParameterCount& actual, 356 const ParameterCount& actual,
357 InvokeFlag flag, 357 InvokeFlag flag,
358 const CallWrapper& call_wrapper = NullCallWrapper()); 358 const CallWrapper& call_wrapper,
359 CallKind call_kind);
359 360
360 // Invoke specified builtin JavaScript function. Adds an entry to 361 // Invoke specified builtin JavaScript function. Adds an entry to
361 // the unresolved list if the name does not resolve. 362 // the unresolved list if the name does not resolve.
362 void InvokeBuiltin(Builtins::JavaScript id, 363 void InvokeBuiltin(Builtins::JavaScript id,
363 InvokeFlag flag, 364 InvokeFlag flag,
364 const CallWrapper& call_wrapper = NullCallWrapper()); 365 const CallWrapper& call_wrapper = NullCallWrapper());
365 366
366 // Store the function for the given builtin in the target register. 367 // Store the function for the given builtin in the target register.
367 void GetBuiltinFunction(Register target, Builtins::JavaScript id); 368 void GetBuiltinFunction(Register target, Builtins::JavaScript id);
368 369
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 // Compare object type for heap object. 829 // Compare object type for heap object.
829 // Always use unsigned comparisons: above and below, not less and greater. 830 // Always use unsigned comparisons: above and below, not less and greater.
830 // Incoming register is heap_object and outgoing register is map. 831 // Incoming register is heap_object and outgoing register is map.
831 // They may be the same register, and may be kScratchRegister. 832 // They may be the same register, and may be kScratchRegister.
832 void CmpObjectType(Register heap_object, InstanceType type, Register map); 833 void CmpObjectType(Register heap_object, InstanceType type, Register map);
833 834
834 // Compare instance type for map. 835 // Compare instance type for map.
835 // Always use unsigned comparisons: above and below, not less and greater. 836 // Always use unsigned comparisons: above and below, not less and greater.
836 void CmpInstanceType(Register map, InstanceType type); 837 void CmpInstanceType(Register map, InstanceType type);
837 838
839 // Check if a map for a JSObject indicates that the object has fast elements.
840 // Jump to the specified label if it does not.
841 void CheckFastElements(Register map,
842 Label* fail,
843 Label::Distance distance = Label::kFar);
844
838 // Check if the map of an object is equal to a specified map and 845 // Check if the map of an object is equal to a specified map and
839 // branch to label if not. Skip the smi check if not required 846 // branch to label if not. Skip the smi check if not required
840 // (object is known to be a heap object) 847 // (object is known to be a heap object)
841 void CheckMap(Register obj, 848 void CheckMap(Register obj,
842 Handle<Map> map, 849 Handle<Map> map,
843 Label* fail, 850 Label* fail,
844 SmiCheckType smi_check_type); 851 SmiCheckType smi_check_type);
845 852
846 // Check if the map of an object is equal to a specified map and branch to a 853 // Check if the map of an object is equal to a specified map and branch to a
847 // specified target if equal. Skip the smi check if not required (object is 854 // specified target if equal. Skip the smi check if not required (object is
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 921
915 // Generate code for checking access rights - used for security checks 922 // Generate code for checking access rights - used for security checks
916 // on access to global objects across environments. The holder register 923 // on access to global objects across environments. The holder register
917 // is left untouched, but the scratch register and kScratchRegister, 924 // is left untouched, but the scratch register and kScratchRegister,
918 // which must be different, are clobbered. 925 // which must be different, are clobbered.
919 void CheckAccessGlobalProxy(Register holder_reg, 926 void CheckAccessGlobalProxy(Register holder_reg,
920 Register scratch, 927 Register scratch,
921 Label* miss); 928 Label* miss);
922 929
923 930
931 void LoadFromNumberDictionary(Label* miss,
932 Register elements,
933 Register key,
934 Register r0,
935 Register r1,
936 Register r2,
937 Register result);
938
939
924 // --------------------------------------------------------------------------- 940 // ---------------------------------------------------------------------------
925 // Allocation support 941 // Allocation support
926 942
927 // Allocate an object in new space. If the new space is exhausted control 943 // Allocate an object in new space. If the new space is exhausted control
928 // continues at the gc_required label. The allocated object is returned in 944 // continues at the gc_required label. The allocated object is returned in
929 // result and end of the new object is returned in result_end. The register 945 // result and end of the new object is returned in result_end. The register
930 // scratch can be passed as no_reg in which case an additional object 946 // scratch can be passed as no_reg in which case an additional object
931 // reference will be added to the reloc info. The returned pointers in result 947 // reference will be added to the reloc info. The returned pointers in result
932 // and result_end have not yet been tagged as heap objects. If 948 // and result_end have not yet been tagged as heap objects. If
933 // result_contains_top_on_entry is true the content of result is known to be 949 // result_contains_top_on_entry is true the content of result is known to be
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 masm->popfd(); \ 1393 masm->popfd(); \
1378 } \ 1394 } \
1379 masm-> 1395 masm->
1380 #else 1396 #else
1381 #define ACCESS_MASM(masm) masm-> 1397 #define ACCESS_MASM(masm) masm->
1382 #endif 1398 #endif
1383 1399
1384 } } // namespace v8::internal 1400 } } // namespace v8::internal
1385 1401
1386 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ 1402 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_
OLDNEW
« no previous file with comments | « src/x64/lithium-x64.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698