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

Side by Side Diff: src/interpreter/bytecode-array-builder.cc

Issue 1419823003: Remove support for "loads and stores to global vars through property cell shortcuts inst… (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@disable-shortcuts
Patch Set: Addressing comments Created 5 years, 2 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
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-generator.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 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 "src/interpreter/bytecode-array-builder.h" 5 #include "src/interpreter/bytecode-array-builder.h"
6 6
7 namespace v8 { 7 namespace v8 {
8 namespace internal { 8 namespace internal {
9 namespace interpreter { 9 namespace interpreter {
10 10
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 } 257 }
258 258
259 259
260 BytecodeArrayBuilder& BytecodeArrayBuilder::StoreAccumulatorInRegister( 260 BytecodeArrayBuilder& BytecodeArrayBuilder::StoreAccumulatorInRegister(
261 Register reg) { 261 Register reg) {
262 Output(Bytecode::kStar, reg.ToOperand()); 262 Output(Bytecode::kStar, reg.ToOperand());
263 return *this; 263 return *this;
264 } 264 }
265 265
266 266
267 BytecodeArrayBuilder& BytecodeArrayBuilder::LoadGlobal(int slot_index) {
268 DCHECK(slot_index >= 0);
269 if (FitsInIdx8Operand(slot_index)) {
270 Output(Bytecode::kLdaGlobal, static_cast<uint8_t>(slot_index));
271 } else {
272 UNIMPLEMENTED();
273 }
274 return *this;
275 }
276
277
278 BytecodeArrayBuilder& BytecodeArrayBuilder::StoreGlobal(
279 int slot_index, LanguageMode language_mode) {
280 DCHECK(slot_index >= 0);
281 Bytecode bytecode = BytecodeForStoreGlobal(language_mode);
282 if (FitsInIdx8Operand(slot_index)) {
283 Output(bytecode, static_cast<uint8_t>(slot_index));
284 } else {
285 UNIMPLEMENTED();
286 }
287 return *this;
288 }
289
290
291 BytecodeArrayBuilder& BytecodeArrayBuilder::LoadContextSlot(Register context, 267 BytecodeArrayBuilder& BytecodeArrayBuilder::LoadContextSlot(Register context,
292 int slot_index) { 268 int slot_index) {
293 DCHECK(slot_index >= 0); 269 DCHECK(slot_index >= 0);
294 if (FitsInIdx8Operand(slot_index)) { 270 if (FitsInIdx8Operand(slot_index)) {
295 Output(Bytecode::kLdaContextSlot, context.ToOperand(), 271 Output(Bytecode::kLdaContextSlot, context.ToOperand(),
296 static_cast<uint8_t>(slot_index)); 272 static_cast<uint8_t>(slot_index));
297 } else { 273 } else {
298 UNIMPLEMENTED(); 274 UNIMPLEMENTED();
299 } 275 }
300 return *this; 276 return *this;
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
912 case STRONG: 888 case STRONG:
913 UNIMPLEMENTED(); 889 UNIMPLEMENTED();
914 default: 890 default:
915 UNREACHABLE(); 891 UNREACHABLE();
916 } 892 }
917 return static_cast<Bytecode>(-1); 893 return static_cast<Bytecode>(-1);
918 } 894 }
919 895
920 896
921 // static 897 // static
922 Bytecode BytecodeArrayBuilder::BytecodeForStoreGlobal(
923 LanguageMode language_mode) {
924 switch (language_mode) {
925 case SLOPPY:
926 return Bytecode::kStaGlobalSloppy;
927 case STRICT:
928 return Bytecode::kStaGlobalStrict;
929 case STRONG:
930 UNIMPLEMENTED();
931 default:
932 UNREACHABLE();
933 }
934 return static_cast<Bytecode>(-1);
935 }
936
937
938 // static
939 bool BytecodeArrayBuilder::FitsInIdx8Operand(int value) { 898 bool BytecodeArrayBuilder::FitsInIdx8Operand(int value) {
940 return kMinUInt8 <= value && value <= kMaxUInt8; 899 return kMinUInt8 <= value && value <= kMaxUInt8;
941 } 900 }
942 901
943 902
944 // static 903 // static
945 bool BytecodeArrayBuilder::FitsInIdx8Operand(size_t value) { 904 bool BytecodeArrayBuilder::FitsInIdx8Operand(size_t value) {
946 return value <= static_cast<size_t>(kMaxUInt8); 905 return value <= static_cast<size_t>(kMaxUInt8);
947 } 906 }
948 907
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 DCHECK_GT(next_consecutive_count_, 0); 954 DCHECK_GT(next_consecutive_count_, 0);
996 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_); 955 builder_->BorrowConsecutiveTemporaryRegister(next_consecutive_register_);
997 allocated_.push_back(next_consecutive_register_); 956 allocated_.push_back(next_consecutive_register_);
998 next_consecutive_count_--; 957 next_consecutive_count_--;
999 return Register(next_consecutive_register_++); 958 return Register(next_consecutive_register_++);
1000 } 959 }
1001 960
1002 } // namespace interpreter 961 } // namespace interpreter
1003 } // namespace internal 962 } // namespace internal
1004 } // namespace v8 963 } // namespace v8
OLDNEW
« no previous file with comments | « src/interpreter/bytecode-array-builder.h ('k') | src/interpreter/bytecode-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698