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

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

Issue 308793010: Inline Array.shift() fast path instead of using a code stub. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 6 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
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "v8.h" 5 #include "v8.h"
6 6
7 #if V8_TARGET_ARCH_IA32 7 #if V8_TARGET_ARCH_IA32
8 8
9 #include "ia32/lithium-codegen-ia32.h" 9 #include "ia32/lithium-codegen-ia32.h"
10 #include "ic.h" 10 #include "ic.h"
(...skipping 4280 matching lines...) Expand 10 before | Expand all | Expand 10 after
4291 bool is_js_array = from_map->instance_type() == JS_ARRAY_TYPE; 4291 bool is_js_array = from_map->instance_type() == JS_ARRAY_TYPE;
4292 TransitionElementsKindStub stub(isolate(), from_kind, to_kind, is_js_array); 4292 TransitionElementsKindStub stub(isolate(), from_kind, to_kind, is_js_array);
4293 __ CallStub(&stub); 4293 __ CallStub(&stub);
4294 RecordSafepointWithLazyDeopt(instr, 4294 RecordSafepointWithLazyDeopt(instr,
4295 RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS); 4295 RECORD_SAFEPOINT_WITH_REGISTERS_AND_NO_ARGUMENTS);
4296 } 4296 }
4297 __ bind(&not_applicable); 4297 __ bind(&not_applicable);
4298 } 4298 }
4299 4299
4300 4300
4301 void LCodeGen::DoArrayShift(LArrayShift* instr) {
4302 ASSERT(ToRegister(instr->context()).is(esi));
4303 ASSERT(ToRegister(instr->object()).is(eax));
4304 ASSERT(ToRegister(instr->result()).is(eax));
4305 ArrayShiftStub stub(isolate(), instr->hydrogen()->kind());
4306 CallCode(stub.GetCode(), RelocInfo::CODE_TARGET, instr);
4307 }
4308
4309
4310 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) { 4301 void LCodeGen::DoStringCharCodeAt(LStringCharCodeAt* instr) {
4311 class DeferredStringCharCodeAt V8_FINAL : public LDeferredCode { 4302 class DeferredStringCharCodeAt V8_FINAL : public LDeferredCode {
4312 public: 4303 public:
4313 DeferredStringCharCodeAt(LCodeGen* codegen, 4304 DeferredStringCharCodeAt(LCodeGen* codegen,
4314 LStringCharCodeAt* instr) 4305 LStringCharCodeAt* instr)
4315 : LDeferredCode(codegen), instr_(instr) { } 4306 : LDeferredCode(codegen), instr_(instr) { }
4316 virtual void Generate() V8_OVERRIDE { 4307 virtual void Generate() V8_OVERRIDE {
4317 codegen()->DoDeferredStringCharCodeAt(instr_); 4308 codegen()->DoDeferredStringCharCodeAt(instr_);
4318 } 4309 }
4319 virtual LInstruction* instr() V8_OVERRIDE { return instr_; } 4310 virtual LInstruction* instr() V8_OVERRIDE { return instr_; }
(...skipping 1338 matching lines...) Expand 10 before | Expand all | Expand 10 after
5658 __ bind(deferred->exit()); 5649 __ bind(deferred->exit());
5659 __ bind(&done); 5650 __ bind(&done);
5660 } 5651 }
5661 5652
5662 5653
5663 #undef __ 5654 #undef __
5664 5655
5665 } } // namespace v8::internal 5656 } } // namespace v8::internal
5666 5657
5667 #endif // V8_TARGET_ARCH_IA32 5658 #endif // V8_TARGET_ARCH_IA32
OLDNEW
« src/hydrogen.cc ('K') | « src/ia32/code-stubs-ia32.cc ('k') | src/ia32/lithium-ia32.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698