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

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

Issue 466033: Fast codegen: Working break and continue. (Closed)
Patch Set: Fixed bug in ARM PopTryHandler, merge with head. Created 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 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 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 } 393 }
394 394
395 void Move(const Operand& dst, Smi* source) { 395 void Move(const Operand& dst, Smi* source) {
396 Set(dst, reinterpret_cast<int64_t>(source)); 396 Set(dst, reinterpret_cast<int64_t>(source));
397 } 397 }
398 398
399 void Push(Smi* smi); 399 void Push(Smi* smi);
400 void Test(const Operand& dst, Smi* source); 400 void Test(const Operand& dst, Smi* source);
401 401
402 // --------------------------------------------------------------------------- 402 // ---------------------------------------------------------------------------
403 // Macro instructions 403 // Macro instructions.
404 404
405 // Load a register with a long value as efficiently as possible. 405 // Load a register with a long value as efficiently as possible.
406 void Set(Register dst, int64_t x); 406 void Set(Register dst, int64_t x);
407 void Set(const Operand& dst, int64_t x); 407 void Set(const Operand& dst, int64_t x);
408 408
409 // Handle support 409 // Handle support
410 void Move(Register dst, Handle<Object> source); 410 void Move(Register dst, Handle<Object> source);
411 void Move(const Operand& dst, Handle<Object> source); 411 void Move(const Operand& dst, Handle<Object> source);
412 void Cmp(Register dst, Handle<Object> source); 412 void Cmp(Register dst, Handle<Object> source);
413 void Cmp(const Operand& dst, Handle<Object> source); 413 void Cmp(const Operand& dst, Handle<Object> source);
414 void Push(Handle<Object> source); 414 void Push(Handle<Object> source);
415 void Drop(int stack_elements);
416 void Call(Label* target) { call(target); }
415 417
416 // Control Flow 418 // Control Flow
417 void Jump(Address destination, RelocInfo::Mode rmode); 419 void Jump(Address destination, RelocInfo::Mode rmode);
418 void Jump(ExternalReference ext); 420 void Jump(ExternalReference ext);
419 void Jump(Handle<Code> code_object, RelocInfo::Mode rmode); 421 void Jump(Handle<Code> code_object, RelocInfo::Mode rmode);
420 422
421 void Call(Address destination, RelocInfo::Mode rmode); 423 void Call(Address destination, RelocInfo::Mode rmode);
422 void Call(ExternalReference ext); 424 void Call(ExternalReference ext);
423 void Call(Handle<Code> code_object, RelocInfo::Mode rmode); 425 void Call(Handle<Code> code_object, RelocInfo::Mode rmode);
424 426
(...skipping 11 matching lines...) Expand all
436 // jcc instructions (je, ja, jae, jb, jbe, je, and jz). 438 // jcc instructions (je, ja, jae, jb, jbe, je, and jz).
437 void FCmp(); 439 void FCmp();
438 440
439 // --------------------------------------------------------------------------- 441 // ---------------------------------------------------------------------------
440 // Exception handling 442 // Exception handling
441 443
442 // Push a new try handler and link into try handler chain. The return 444 // Push a new try handler and link into try handler chain. The return
443 // address must be pushed before calling this helper. 445 // address must be pushed before calling this helper.
444 void PushTryHandler(CodeLocation try_location, HandlerType type); 446 void PushTryHandler(CodeLocation try_location, HandlerType type);
445 447
448 // Unlink the stack handler on top of the stack from the try handler chain.
449 void PopTryHandler();
446 450
447 // --------------------------------------------------------------------------- 451 // ---------------------------------------------------------------------------
448 // Inline caching support 452 // Inline caching support
449 453
450 // Generates code that verifies that the maps of objects in the 454 // Generates code that verifies that the maps of objects in the
451 // prototype chain of object hasn't changed since the code was 455 // prototype chain of object hasn't changed since the code was
452 // generated and branches to the miss label if any map has. If 456 // generated and branches to the miss label if any map has. If
453 // necessary the function also generates code for security check 457 // necessary the function also generates code for security check
454 // in case of global object holders. The scratch and holder 458 // in case of global object holders. The scratch and holder
455 // registers are always clobbered, but the object register is only 459 // registers are always clobbered, but the object register is only
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
745 } \ 749 } \
746 masm-> 750 masm->
747 #else 751 #else
748 #define ACCESS_MASM(masm) masm-> 752 #define ACCESS_MASM(masm) masm->
749 #endif 753 #endif
750 754
751 755
752 } } // namespace v8::internal 756 } } // namespace v8::internal
753 757
754 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ 758 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698