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

Side by Side Diff: src/x87/macro-assembler-x87.cc

Issue 1406113007: Merge GlobalObject with JSGlobalObject. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 1 month 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/x87/code-stubs-x87.cc ('k') | test/cctest/test-heap.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #if V8_TARGET_ARCH_X87 5 #if V8_TARGET_ARCH_X87
6 6
7 #include "src/base/bits.h" 7 #include "src/base/bits.h"
8 #include "src/base/division-by-constant.h" 8 #include "src/base/division-by-constant.h"
9 #include "src/bootstrapper.h" 9 #include "src/bootstrapper.h"
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after
1031 1031
1032 // When generating debug code, make sure the lexical context is set. 1032 // When generating debug code, make sure the lexical context is set.
1033 if (emit_debug_code()) { 1033 if (emit_debug_code()) {
1034 cmp(scratch1, Immediate(0)); 1034 cmp(scratch1, Immediate(0));
1035 Check(not_equal, kWeShouldNotHaveAnEmptyLexicalContext); 1035 Check(not_equal, kWeShouldNotHaveAnEmptyLexicalContext);
1036 } 1036 }
1037 // Load the native context of the current context. 1037 // Load the native context of the current context.
1038 int offset = 1038 int offset =
1039 Context::kHeaderSize + Context::GLOBAL_OBJECT_INDEX * kPointerSize; 1039 Context::kHeaderSize + Context::GLOBAL_OBJECT_INDEX * kPointerSize;
1040 mov(scratch1, FieldOperand(scratch1, offset)); 1040 mov(scratch1, FieldOperand(scratch1, offset));
1041 mov(scratch1, FieldOperand(scratch1, GlobalObject::kNativeContextOffset)); 1041 mov(scratch1, FieldOperand(scratch1, JSGlobalObject::kNativeContextOffset));
1042 1042
1043 // Check the context is a native context. 1043 // Check the context is a native context.
1044 if (emit_debug_code()) { 1044 if (emit_debug_code()) {
1045 // Read the first word and compare to native_context_map. 1045 // Read the first word and compare to native_context_map.
1046 cmp(FieldOperand(scratch1, HeapObject::kMapOffset), 1046 cmp(FieldOperand(scratch1, HeapObject::kMapOffset),
1047 isolate()->factory()->native_context_map()); 1047 isolate()->factory()->native_context_map());
1048 Check(equal, kJSGlobalObjectNativeContextShouldBeANativeContext); 1048 Check(equal, kJSGlobalObjectNativeContextShouldBeANativeContext);
1049 } 1049 }
1050 1050
1051 // Check if both contexts are the same. 1051 // Check if both contexts are the same.
(...skipping 993 matching lines...) Expand 10 before | Expand all | Expand 10 after
2045 GetBuiltinFunction(edi, native_context_index); 2045 GetBuiltinFunction(edi, native_context_index);
2046 InvokeCode(FieldOperand(edi, JSFunction::kCodeEntryOffset), 2046 InvokeCode(FieldOperand(edi, JSFunction::kCodeEntryOffset),
2047 expected, expected, flag, call_wrapper); 2047 expected, expected, flag, call_wrapper);
2048 } 2048 }
2049 2049
2050 2050
2051 void MacroAssembler::GetBuiltinFunction(Register target, 2051 void MacroAssembler::GetBuiltinFunction(Register target,
2052 int native_context_index) { 2052 int native_context_index) {
2053 // Load the JavaScript builtin function from the builtins object. 2053 // Load the JavaScript builtin function from the builtins object.
2054 mov(target, Operand(esi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); 2054 mov(target, Operand(esi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
2055 mov(target, FieldOperand(target, GlobalObject::kNativeContextOffset)); 2055 mov(target, FieldOperand(target, JSGlobalObject::kNativeContextOffset));
2056 mov(target, ContextOperand(target, native_context_index)); 2056 mov(target, ContextOperand(target, native_context_index));
2057 } 2057 }
2058 2058
2059 2059
2060 void MacroAssembler::GetBuiltinEntry(Register target, 2060 void MacroAssembler::GetBuiltinEntry(Register target,
2061 int native_context_index) { 2061 int native_context_index) {
2062 DCHECK(!target.is(edi)); 2062 DCHECK(!target.is(edi));
2063 // Load the JavaScript builtin function from the builtins object. 2063 // Load the JavaScript builtin function from the builtins object.
2064 GetBuiltinFunction(edi, native_context_index); 2064 GetBuiltinFunction(edi, native_context_index);
2065 // Load the code entry point from the function into the target register. 2065 // Load the code entry point from the function into the target register.
(...skipping 22 matching lines...) Expand all
2088 if (emit_debug_code()) { 2088 if (emit_debug_code()) {
2089 cmp(FieldOperand(dst, HeapObject::kMapOffset), 2089 cmp(FieldOperand(dst, HeapObject::kMapOffset),
2090 isolate()->factory()->with_context_map()); 2090 isolate()->factory()->with_context_map());
2091 Check(not_equal, kVariableResolvedToWithContext); 2091 Check(not_equal, kVariableResolvedToWithContext);
2092 } 2092 }
2093 } 2093 }
2094 2094
2095 2095
2096 void MacroAssembler::LoadGlobalProxy(Register dst) { 2096 void MacroAssembler::LoadGlobalProxy(Register dst) {
2097 mov(dst, GlobalObjectOperand()); 2097 mov(dst, GlobalObjectOperand());
2098 mov(dst, FieldOperand(dst, GlobalObject::kGlobalProxyOffset)); 2098 mov(dst, FieldOperand(dst, JSGlobalObject::kGlobalProxyOffset));
2099 } 2099 }
2100 2100
2101 2101
2102 void MacroAssembler::LoadTransitionedArrayMapConditional( 2102 void MacroAssembler::LoadTransitionedArrayMapConditional(
2103 ElementsKind expected_kind, 2103 ElementsKind expected_kind,
2104 ElementsKind transitioned_kind, 2104 ElementsKind transitioned_kind,
2105 Register map_in_out, 2105 Register map_in_out,
2106 Register scratch, 2106 Register scratch,
2107 Label* no_map_match) { 2107 Label* no_map_match) {
2108 // Load the global or builtins object from the current context. 2108 // Load the global or builtins object from the current context.
2109 mov(scratch, Operand(esi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); 2109 mov(scratch, Operand(esi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
2110 mov(scratch, FieldOperand(scratch, GlobalObject::kNativeContextOffset)); 2110 mov(scratch, FieldOperand(scratch, JSGlobalObject::kNativeContextOffset));
2111 2111
2112 // Check that the function's map is the same as the expected cached map. 2112 // Check that the function's map is the same as the expected cached map.
2113 mov(scratch, Operand(scratch, 2113 mov(scratch, Operand(scratch,
2114 Context::SlotOffset(Context::JS_ARRAY_MAPS_INDEX))); 2114 Context::SlotOffset(Context::JS_ARRAY_MAPS_INDEX)));
2115 2115
2116 size_t offset = expected_kind * kPointerSize + 2116 size_t offset = expected_kind * kPointerSize +
2117 FixedArrayBase::kHeaderSize; 2117 FixedArrayBase::kHeaderSize;
2118 cmp(map_in_out, FieldOperand(scratch, offset)); 2118 cmp(map_in_out, FieldOperand(scratch, offset));
2119 j(not_equal, no_map_match); 2119 j(not_equal, no_map_match);
2120 2120
2121 // Use the transitioned cached map. 2121 // Use the transitioned cached map.
2122 offset = transitioned_kind * kPointerSize + 2122 offset = transitioned_kind * kPointerSize +
2123 FixedArrayBase::kHeaderSize; 2123 FixedArrayBase::kHeaderSize;
2124 mov(map_in_out, FieldOperand(scratch, offset)); 2124 mov(map_in_out, FieldOperand(scratch, offset));
2125 } 2125 }
2126 2126
2127 2127
2128 void MacroAssembler::LoadGlobalFunction(int index, Register function) { 2128 void MacroAssembler::LoadGlobalFunction(int index, Register function) {
2129 // Load the global or builtins object from the current context. 2129 // Load the global or builtins object from the current context.
2130 mov(function, 2130 mov(function,
2131 Operand(esi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX))); 2131 Operand(esi, Context::SlotOffset(Context::GLOBAL_OBJECT_INDEX)));
2132 // Load the native context from the global or builtins object. 2132 // Load the native context from the global or builtins object.
2133 mov(function, 2133 mov(function, FieldOperand(function, JSGlobalObject::kNativeContextOffset));
2134 FieldOperand(function, GlobalObject::kNativeContextOffset));
2135 // Load the function from the native context. 2134 // Load the function from the native context.
2136 mov(function, Operand(function, Context::SlotOffset(index))); 2135 mov(function, Operand(function, Context::SlotOffset(index)));
2137 } 2136 }
2138 2137
2139 2138
2140 void MacroAssembler::LoadGlobalFunctionInitialMap(Register function, 2139 void MacroAssembler::LoadGlobalFunctionInitialMap(Register function,
2141 Register map) { 2140 Register map) {
2142 // Load the initial map. The global functions all have initial maps. 2141 // Load the initial map. The global functions all have initial maps.
2143 mov(map, FieldOperand(function, JSFunction::kPrototypeOrInitialMapOffset)); 2142 mov(map, FieldOperand(function, JSFunction::kPrototypeOrInitialMapOffset));
2144 if (emit_debug_code()) { 2143 if (emit_debug_code()) {
(...skipping 877 matching lines...) Expand 10 before | Expand all | Expand 10 after
3022 mov(eax, dividend); 3021 mov(eax, dividend);
3023 shr(eax, 31); 3022 shr(eax, 31);
3024 add(edx, eax); 3023 add(edx, eax);
3025 } 3024 }
3026 3025
3027 3026
3028 } // namespace internal 3027 } // namespace internal
3029 } // namespace v8 3028 } // namespace v8
3030 3029
3031 #endif // V8_TARGET_ARCH_X87 3030 #endif // V8_TARGET_ARCH_X87
OLDNEW
« no previous file with comments | « src/x87/code-stubs-x87.cc ('k') | test/cctest/test-heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698