Line data Source code
1 : // Copyright 2014 the V8 project authors. All rights reserved.
2 : // Use of this source code is governed by a BSD-style license that can be
3 : // found in the LICENSE file.
4 :
5 : #include "src/ic/access-compiler.h"
6 : #include "src/assembler-inl.h"
7 : #include "src/objects-inl.h"
8 :
9 : namespace v8 {
10 : namespace internal {
11 :
12 38670 : void PropertyAccessCompiler::TailCallBuiltin(MacroAssembler* masm,
13 : Builtins::Name name) {
14 : Handle<Code> code(masm->isolate()->builtins()->builtin(name));
15 38670 : GenerateTailCall(masm, code);
16 38670 : }
17 :
18 38698 : Register* PropertyAccessCompiler::GetCallingConvention(Isolate* isolate,
19 : Code::Kind kind) {
20 : AccessCompilerData* data = isolate->access_compiler_data();
21 38698 : if (!data->IsInitialized()) {
22 4029 : InitializePlatformSpecific(data);
23 : }
24 38698 : if (kind == Code::LOAD_IC || kind == Code::KEYED_LOAD_IC) {
25 277 : return data->load_calling_convention();
26 : }
27 : DCHECK(kind == Code::STORE_IC || kind == Code::KEYED_STORE_IC);
28 38421 : return data->store_calling_convention();
29 : }
30 :
31 :
32 77368 : Register PropertyAccessCompiler::slot() const {
33 77368 : if (kind() == Code::LOAD_IC || kind() == Code::KEYED_LOAD_IC) {
34 554 : return LoadDescriptor::SlotRegister();
35 : }
36 : DCHECK(kind() == Code::STORE_IC || kind() == Code::KEYED_STORE_IC);
37 76814 : return StoreWithVectorDescriptor::SlotRegister();
38 : }
39 :
40 :
41 77368 : Register PropertyAccessCompiler::vector() const {
42 77368 : if (kind() == Code::LOAD_IC || kind() == Code::KEYED_LOAD_IC) {
43 554 : return LoadWithVectorDescriptor::VectorRegister();
44 : }
45 : DCHECK(kind() == Code::STORE_IC || kind() == Code::KEYED_STORE_IC);
46 76814 : return StoreWithVectorDescriptor::VectorRegister();
47 : }
48 : } // namespace internal
49 : } // namespace v8
|