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

Side by Side Diff: src/ia32/codegen-ia32.cc

Issue 343015: Changed accessor ICs to using direct calls. (Closed)
Patch Set: Created 11 years, 1 month 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2009 the V8 project authors. All rights reserved. 1 // Copyright 2006-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 7730 matching lines...) Expand 10 before | Expand all | Expand 10 after
7741 // Note that this is one more "argument" than the function expects 7741 // Note that this is one more "argument" than the function expects
7742 // so the out cell will have to be popped explicitly after returning 7742 // so the out cell will have to be popped explicitly after returning
7743 // from the function. 7743 // from the function.
7744 __ mov(Operand(esp, 1 * kPointerSize), ebx); // name. 7744 __ mov(Operand(esp, 1 * kPointerSize), ebx); // name.
7745 __ mov(Operand(esp, 2 * kPointerSize), eax); // arguments pointer. 7745 __ mov(Operand(esp, 2 * kPointerSize), eax); // arguments pointer.
7746 __ mov(ebx, esp); 7746 __ mov(ebx, esp);
7747 __ add(Operand(ebx), Immediate(3 * kPointerSize)); 7747 __ add(Operand(ebx), Immediate(3 * kPointerSize));
7748 __ mov(Operand(esp, 0 * kPointerSize), ebx); // output 7748 __ mov(Operand(esp, 0 * kPointerSize), ebx); // output
7749 __ mov(Operand(esp, 3 * kPointerSize), Immediate(0)); // out cell. 7749 __ mov(Operand(esp, 3 * kPointerSize), Immediate(0)); // out cell.
7750 } 7750 }
7751 __ mov(eax, Immediate(ExternalReference(fun())));
7752 // Call the api function! 7751 // Call the api function!
7753 __ call(Operand(eax)); 7752 __ call(fun()->address(), RelocInfo::RUNTIME_ENTRY);
7754 // Check if the function scheduled an exception. 7753 // Check if the function scheduled an exception.
7755 ExternalReference scheduled_exception_address = 7754 ExternalReference scheduled_exception_address =
7756 ExternalReference::scheduled_exception_address(); 7755 ExternalReference::scheduled_exception_address();
7757 __ cmp(Operand::StaticVariable(scheduled_exception_address), 7756 __ cmp(Operand::StaticVariable(scheduled_exception_address),
7758 Immediate(Factory::the_hole_value())); 7757 Immediate(Factory::the_hole_value()));
7759 __ j(not_equal, &promote_scheduled_exception, not_taken); 7758 __ j(not_equal, &promote_scheduled_exception, not_taken);
7760 if (!kPassHandlesDirectly) { 7759 if (!kPassHandlesDirectly) {
7761 // The returned value is a pointer to the handle holding the result. 7760 // The returned value is a pointer to the handle holding the result.
7762 // Dereference this to get to the location. 7761 // Dereference this to get to the location.
7763 __ mov(eax, Operand(eax, 0)); 7762 __ mov(eax, Operand(eax, 0));
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
8150 8149
8151 int CompareStub::MinorKey() { 8150 int CompareStub::MinorKey() {
8152 // Encode the two parameters in a unique 16 bit value. 8151 // Encode the two parameters in a unique 16 bit value.
8153 ASSERT(static_cast<unsigned>(cc_) < (1 << 15)); 8152 ASSERT(static_cast<unsigned>(cc_) < (1 << 15));
8154 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0); 8153 return (static_cast<unsigned>(cc_) << 1) | (strict_ ? 1 : 0);
8155 } 8154 }
8156 8155
8157 #undef __ 8156 #undef __
8158 8157
8159 } } // namespace v8::internal 8158 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698