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

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

Issue 11818021: Allocation Info Tracking, continued. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebase Created 7 years, 10 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 // 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 4047 matching lines...) Expand 10 before | Expand all | Expand 10 after
4058 CALL_AS_FUNCTION, 4058 CALL_AS_FUNCTION,
4059 EDI_UNINITIALIZED); 4059 EDI_UNINITIALIZED);
4060 } 4060 }
4061 4061
4062 4062
4063 void LCodeGen::DoCallNew(LCallNew* instr) { 4063 void LCodeGen::DoCallNew(LCallNew* instr) {
4064 ASSERT(ToRegister(instr->context()).is(esi)); 4064 ASSERT(ToRegister(instr->context()).is(esi));
4065 ASSERT(ToRegister(instr->constructor()).is(edi)); 4065 ASSERT(ToRegister(instr->constructor()).is(edi));
4066 ASSERT(ToRegister(instr->result()).is(eax)); 4066 ASSERT(ToRegister(instr->result()).is(eax));
4067 4067
4068 __ Set(eax, Immediate(instr->arity()));
4069 // No cell in ebx for construct type feedback in optimized code
4070 Handle<Object> undefined_value(isolate()->heap()->undefined_value());
4071 __ mov(ebx, Immediate(undefined_value));
4068 CallConstructStub stub(NO_CALL_FUNCTION_FLAGS); 4072 CallConstructStub stub(NO_CALL_FUNCTION_FLAGS);
4073 CallCode(stub.GetCode(), RelocInfo::CONSTRUCT_CALL, instr);
4074 }
4075
4076
4077 void LCodeGen::DoCallNewArray(LCallNewArray* instr) {
4078 ASSERT(ToRegister(instr->context()).is(esi));
4079 ASSERT(ToRegister(instr->constructor()).is(edi));
4080 ASSERT(ToRegister(instr->result()).is(eax));
4081
4069 __ Set(eax, Immediate(instr->arity())); 4082 __ Set(eax, Immediate(instr->arity()));
4070 CallCode(stub.GetCode(), RelocInfo::CONSTRUCT_CALL, instr); 4083 __ mov(ebx, instr->hydrogen()->property_cell());
4084 Handle<Code> array_construct_code =
4085 isolate()->builtins()->ArrayConstructCode();
4086
4087 CallCode(array_construct_code, RelocInfo::CONSTRUCT_CALL, instr);
4071 } 4088 }
4072 4089
4073 4090
4074 void LCodeGen::DoCallRuntime(LCallRuntime* instr) { 4091 void LCodeGen::DoCallRuntime(LCallRuntime* instr) {
4075 CallRuntime(instr->function(), instr->arity(), instr); 4092 CallRuntime(instr->function(), instr->arity(), instr);
4076 } 4093 }
4077 4094
4078 4095
4079 void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) { 4096 void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
4080 Register object = ToRegister(instr->object()); 4097 Register object = ToRegister(instr->object());
(...skipping 2062 matching lines...) Expand 10 before | Expand all | Expand 10 after
6143 FixedArray::kHeaderSize - kPointerSize)); 6160 FixedArray::kHeaderSize - kPointerSize));
6144 __ bind(&done); 6161 __ bind(&done);
6145 } 6162 }
6146 6163
6147 6164
6148 #undef __ 6165 #undef __
6149 6166
6150 } } // namespace v8::internal 6167 } } // namespace v8::internal
6151 6168
6152 #endif // V8_TARGET_ARCH_IA32 6169 #endif // V8_TARGET_ARCH_IA32
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698