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

Side by Side Diff: src/ic/ic-state.cc

Issue 2302283002: Forking the type system between Crankshaft & Turbofan. (Closed)
Patch Set: Nits. Created 4 years, 3 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/ic/ic-state.h ('k') | src/parsing/parameter-initializer-rewriter.h » ('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 2014 the V8 project authors. All rights reserved. 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 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/ic/ic-state.h" 5 #include "src/ic/ic-state.h"
6 6
7 #include "src/ic/ic.h" 7 #include "src/ic/ic.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 } while (false) 182 } while (false)
183 GENERATE(Token::MOD, SMI, 2, SMI); 183 GENERATE(Token::MOD, SMI, 2, SMI);
184 GENERATE(Token::MOD, SMI, 4, SMI); 184 GENERATE(Token::MOD, SMI, 4, SMI);
185 GENERATE(Token::MOD, SMI, 8, SMI); 185 GENERATE(Token::MOD, SMI, 8, SMI);
186 GENERATE(Token::MOD, SMI, 16, SMI); 186 GENERATE(Token::MOD, SMI, 16, SMI);
187 GENERATE(Token::MOD, SMI, 32, SMI); 187 GENERATE(Token::MOD, SMI, 32, SMI);
188 GENERATE(Token::MOD, SMI, 2048, SMI); 188 GENERATE(Token::MOD, SMI, 2048, SMI);
189 #undef GENERATE 189 #undef GENERATE
190 } 190 }
191 191
192 192 AstType* BinaryOpICState::GetResultType() const {
193 Type* BinaryOpICState::GetResultType() const {
194 Kind result_kind = result_kind_; 193 Kind result_kind = result_kind_;
195 if (HasSideEffects()) { 194 if (HasSideEffects()) {
196 result_kind = NONE; 195 result_kind = NONE;
197 } else if (result_kind == GENERIC && op_ == Token::ADD) { 196 } else if (result_kind == GENERIC && op_ == Token::ADD) {
198 return Type::NumberOrString(); 197 return AstType::NumberOrString();
199 } else if (result_kind == NUMBER && op_ == Token::SHR) { 198 } else if (result_kind == NUMBER && op_ == Token::SHR) {
200 return Type::Unsigned32(); 199 return AstType::Unsigned32();
201 } 200 }
202 DCHECK_NE(GENERIC, result_kind); 201 DCHECK_NE(GENERIC, result_kind);
203 return KindToType(result_kind); 202 return KindToType(result_kind);
204 } 203 }
205 204
206 205
207 std::ostream& operator<<(std::ostream& os, const BinaryOpICState& s) { 206 std::ostream& operator<<(std::ostream& os, const BinaryOpICState& s) {
208 os << "(" << Token::Name(s.op_); 207 os << "(" << Token::Name(s.op_);
209 if (s.CouldCreateAllocationMementos()) os << "_CreateAllocationMementos"; 208 if (s.CouldCreateAllocationMementos()) os << "_CreateAllocationMementos";
210 os << ":" << BinaryOpICState::KindToString(s.left_kind_) << "*"; 209 os << ":" << BinaryOpICState::KindToString(s.left_kind_) << "*";
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 return "String"; 310 return "String";
312 case GENERIC: 311 case GENERIC:
313 return "Generic"; 312 return "Generic";
314 } 313 }
315 UNREACHABLE(); 314 UNREACHABLE();
316 return NULL; 315 return NULL;
317 } 316 }
318 317
319 318
320 // static 319 // static
321 Type* BinaryOpICState::KindToType(Kind kind) { 320 AstType* BinaryOpICState::KindToType(Kind kind) {
322 switch (kind) { 321 switch (kind) {
323 case NONE: 322 case NONE:
324 return Type::None(); 323 return AstType::None();
325 case SMI: 324 case SMI:
326 return Type::SignedSmall(); 325 return AstType::SignedSmall();
327 case INT32: 326 case INT32:
328 return Type::Signed32(); 327 return AstType::Signed32();
329 case NUMBER: 328 case NUMBER:
330 return Type::Number(); 329 return AstType::Number();
331 case STRING: 330 case STRING:
332 return Type::String(); 331 return AstType::String();
333 case GENERIC: 332 case GENERIC:
334 return Type::Any(); 333 return AstType::Any();
335 } 334 }
336 UNREACHABLE(); 335 UNREACHABLE();
337 return NULL; 336 return NULL;
338 } 337 }
339 338
340 339
341 const char* CompareICState::GetStateName(State state) { 340 const char* CompareICState::GetStateName(State state) {
342 switch (state) { 341 switch (state) {
343 case UNINITIALIZED: 342 case UNINITIALIZED:
344 return "UNINITIALIZED"; 343 return "UNINITIALIZED";
(...skipping 13 matching lines...) Expand all
358 return "RECEIVER"; 357 return "RECEIVER";
359 case KNOWN_RECEIVER: 358 case KNOWN_RECEIVER:
360 return "KNOWN_RECEIVER"; 359 return "KNOWN_RECEIVER";
361 case GENERIC: 360 case GENERIC:
362 return "GENERIC"; 361 return "GENERIC";
363 } 362 }
364 UNREACHABLE(); 363 UNREACHABLE();
365 return NULL; 364 return NULL;
366 } 365 }
367 366
368 367 AstType* CompareICState::StateToType(Zone* zone, State state, Handle<Map> map) {
369 Type* CompareICState::StateToType(Zone* zone, State state, Handle<Map> map) {
370 switch (state) { 368 switch (state) {
371 case UNINITIALIZED: 369 case UNINITIALIZED:
372 return Type::None(); 370 return AstType::None();
373 case BOOLEAN: 371 case BOOLEAN:
374 return Type::Boolean(); 372 return AstType::Boolean();
375 case SMI: 373 case SMI:
376 return Type::SignedSmall(); 374 return AstType::SignedSmall();
377 case NUMBER: 375 case NUMBER:
378 return Type::Number(); 376 return AstType::Number();
379 case STRING: 377 case STRING:
380 return Type::String(); 378 return AstType::String();
381 case INTERNALIZED_STRING: 379 case INTERNALIZED_STRING:
382 return Type::InternalizedString(); 380 return AstType::InternalizedString();
383 case UNIQUE_NAME: 381 case UNIQUE_NAME:
384 return Type::UniqueName(); 382 return AstType::UniqueName();
385 case RECEIVER: 383 case RECEIVER:
386 return Type::Receiver(); 384 return AstType::Receiver();
387 case KNOWN_RECEIVER: 385 case KNOWN_RECEIVER:
388 return map.is_null() ? Type::Receiver() : Type::Class(map, zone); 386 return map.is_null() ? AstType::Receiver() : AstType::Class(map, zone);
389 case GENERIC: 387 case GENERIC:
390 return Type::Any(); 388 return AstType::Any();
391 } 389 }
392 UNREACHABLE(); 390 UNREACHABLE();
393 return NULL; 391 return NULL;
394 } 392 }
395 393
396 394
397 CompareICState::State CompareICState::NewInputState(State old_state, 395 CompareICState::State CompareICState::NewInputState(State old_state,
398 Handle<Object> value) { 396 Handle<Object> value) {
399 switch (old_state) { 397 switch (old_state) {
400 case UNINITIALIZED: 398 case UNINITIALIZED:
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 case RECEIVER: 505 case RECEIVER:
508 case GENERIC: 506 case GENERIC:
509 return GENERIC; 507 return GENERIC;
510 } 508 }
511 UNREACHABLE(); 509 UNREACHABLE();
512 return GENERIC; // Make the compiler happy. 510 return GENERIC; // Make the compiler happy.
513 } 511 }
514 512
515 } // namespace internal 513 } // namespace internal
516 } // namespace v8 514 } // namespace v8
OLDNEW
« no previous file with comments | « src/ic/ic-state.h ('k') | src/parsing/parameter-initializer-rewriter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698