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 245683 : void PropertyAccessCompiler::TailCallBuiltin(MacroAssembler* masm,
13 : Builtins::Name name) {
14 245683 : Handle<Code> code(masm->isolate()->builtins()->builtin(name));
15 245683 : GenerateTailCall(masm, code);
16 245683 : }
17 :
18 245699 : Register* PropertyAccessCompiler::GetCallingConvention(Isolate* isolate,
19 : Type type) {
20 : AccessCompilerData* data = isolate->access_compiler_data();
21 245699 : if (!data->IsInitialized()) {
22 3960 : InitializePlatformSpecific(data);
23 : }
24 245699 : switch (type) {
25 : case LOAD:
26 3512 : return data->load_calling_convention();
27 : case STORE:
28 242187 : return data->store_calling_convention();
29 : }
30 0 : UNREACHABLE();
31 : return data->store_calling_convention();
32 : }
33 :
34 :
35 491382 : Register PropertyAccessCompiler::slot() const {
36 491382 : switch (type_) {
37 : case LOAD:
38 7024 : return LoadDescriptor::SlotRegister();
39 : case STORE:
40 484358 : return StoreWithVectorDescriptor::SlotRegister();
41 : }
42 0 : UNREACHABLE();
43 : return StoreWithVectorDescriptor::SlotRegister();
44 : }
45 :
46 491382 : Register PropertyAccessCompiler::vector() const {
47 491382 : switch (type_) {
48 : case LOAD:
49 7024 : return LoadWithVectorDescriptor::VectorRegister();
50 : case STORE:
51 484358 : return StoreWithVectorDescriptor::VectorRegister();
52 : }
53 0 : UNREACHABLE();
54 : return StoreWithVectorDescriptor::VectorRegister();
55 : }
56 : } // namespace internal
57 : } // namespace v8
|