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

Side by Side Diff: src/x64/full-codegen-x64.cc

Issue 3399005: Add a few missing nops to signal no inlined code was generated. (Closed)
Patch Set: Created 10 years, 3 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
« no previous file with comments | « src/ia32/full-codegen-ia32.cc ('k') | 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 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 920 matching lines...) Expand 10 before | Expand all | Expand 10 after
931 931
932 // All extension objects were empty and it is safe to use a global 932 // All extension objects were empty and it is safe to use a global
933 // load IC call. 933 // load IC call.
934 __ movq(rax, CodeGenerator::GlobalObject()); 934 __ movq(rax, CodeGenerator::GlobalObject());
935 __ Move(rcx, slot->var()->name()); 935 __ Move(rcx, slot->var()->name());
936 Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize)); 936 Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize));
937 RelocInfo::Mode mode = (typeof_state == INSIDE_TYPEOF) 937 RelocInfo::Mode mode = (typeof_state == INSIDE_TYPEOF)
938 ? RelocInfo::CODE_TARGET 938 ? RelocInfo::CODE_TARGET
939 : RelocInfo::CODE_TARGET_CONTEXT; 939 : RelocInfo::CODE_TARGET_CONTEXT;
940 __ call(ic, mode); 940 __ call(ic, mode);
941 __ nop();
941 } 942 }
942 943
943 944
944 MemOperand FullCodeGenerator::ContextSlotOperandCheckExtensions( 945 MemOperand FullCodeGenerator::ContextSlotOperandCheckExtensions(
945 Slot* slot, 946 Slot* slot,
946 Label* slow) { 947 Label* slow) {
947 ASSERT(slot->type() == Slot::CONTEXT); 948 ASSERT(slot->type() == Slot::CONTEXT);
948 Register context = rsi; 949 Register context = rsi;
949 Register temp = rbx; 950 Register temp = rbx;
950 951
(...skipping 2216 matching lines...) Expand 10 before | Expand all | Expand 10 after
3167 void FullCodeGenerator::VisitForTypeofValue(Expression* expr, Location where) { 3168 void FullCodeGenerator::VisitForTypeofValue(Expression* expr, Location where) {
3168 VariableProxy* proxy = expr->AsVariableProxy(); 3169 VariableProxy* proxy = expr->AsVariableProxy();
3169 if (proxy != NULL && !proxy->var()->is_this() && proxy->var()->is_global()) { 3170 if (proxy != NULL && !proxy->var()->is_this() && proxy->var()->is_global()) {
3170 Comment cmnt(masm_, "Global variable"); 3171 Comment cmnt(masm_, "Global variable");
3171 __ Move(rcx, proxy->name()); 3172 __ Move(rcx, proxy->name());
3172 __ movq(rax, CodeGenerator::GlobalObject()); 3173 __ movq(rax, CodeGenerator::GlobalObject());
3173 Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize)); 3174 Handle<Code> ic(Builtins::builtin(Builtins::LoadIC_Initialize));
3174 // Use a regular load, not a contextual load, to avoid a reference 3175 // Use a regular load, not a contextual load, to avoid a reference
3175 // error. 3176 // error.
3176 __ Call(ic, RelocInfo::CODE_TARGET); 3177 __ Call(ic, RelocInfo::CODE_TARGET);
3178 __ nop();
3177 if (where == kStack) __ push(rax); 3179 if (where == kStack) __ push(rax);
3178 } else if (proxy != NULL && 3180 } else if (proxy != NULL &&
3179 proxy->var()->slot() != NULL && 3181 proxy->var()->slot() != NULL &&
3180 proxy->var()->slot()->type() == Slot::LOOKUP) { 3182 proxy->var()->slot()->type() == Slot::LOOKUP) {
3181 Label done, slow; 3183 Label done, slow;
3182 3184
3183 // Generate code for loading from variables potentially shadowed 3185 // Generate code for loading from variables potentially shadowed
3184 // by eval-introduced variables. 3186 // by eval-introduced variables.
3185 Slot* slot = proxy->var()->slot(); 3187 Slot* slot = proxy->var()->slot();
3186 EmitDynamicLoadFromSlotFastCase(slot, INSIDE_TYPEOF, &slow, &done); 3188 EmitDynamicLoadFromSlotFastCase(slot, INSIDE_TYPEOF, &slow, &done);
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
3467 __ ret(0); 3469 __ ret(0);
3468 } 3470 }
3469 3471
3470 3472
3471 #undef __ 3473 #undef __
3472 3474
3473 3475
3474 } } // namespace v8::internal 3476 } } // namespace v8::internal
3475 3477
3476 #endif // V8_TARGET_ARCH_X64 3478 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/ia32/full-codegen-ia32.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698