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

Side by Side Diff: src/wasm/asm-wasm-builder.cc

Issue 1655833002: Remove the template magic from types.(h|cc), remove types-inl.h. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Undo whitespace change Created 4 years, 10 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/typing-asm.cc ('k') | test/cctest/test-asm-validator.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/v8.h" 5 #include "src/v8.h"
6 6
7 #include "src/wasm/asm-wasm-builder.h" 7 #include "src/wasm/asm-wasm-builder.h"
8 #include "src/wasm/wasm-macro-gen.h" 8 #include "src/wasm/wasm-macro-gen.h"
9 #include "src/wasm/wasm-opcodes.h" 9 #include "src/wasm/wasm-opcodes.h"
10 10
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 void VisitTryCatchStatement(TryCatchStatement* stmt) { UNREACHABLE(); } 329 void VisitTryCatchStatement(TryCatchStatement* stmt) { UNREACHABLE(); }
330 330
331 void VisitTryFinallyStatement(TryFinallyStatement* stmt) { UNREACHABLE(); } 331 void VisitTryFinallyStatement(TryFinallyStatement* stmt) { UNREACHABLE(); }
332 332
333 void VisitDebuggerStatement(DebuggerStatement* stmt) { UNREACHABLE(); } 333 void VisitDebuggerStatement(DebuggerStatement* stmt) { UNREACHABLE(); }
334 334
335 void VisitFunctionLiteral(FunctionLiteral* expr) { 335 void VisitFunctionLiteral(FunctionLiteral* expr) {
336 Scope* scope = expr->scope(); 336 Scope* scope = expr->scope();
337 if (in_function_) { 337 if (in_function_) {
338 if (expr->bounds().lower->IsFunction()) { 338 if (expr->bounds().lower->IsFunction()) {
339 Type::FunctionType* func_type = expr->bounds().lower->AsFunction(); 339 FunctionType* func_type = expr->bounds().lower->AsFunction();
340 LocalType return_type = TypeFrom(func_type->Result()); 340 LocalType return_type = TypeFrom(func_type->Result());
341 current_function_builder_->ReturnType(return_type); 341 current_function_builder_->ReturnType(return_type);
342 for (int i = 0; i < expr->parameter_count(); i++) { 342 for (int i = 0; i < expr->parameter_count(); i++) {
343 LocalType type = TypeFrom(func_type->Parameter(i)); 343 LocalType type = TypeFrom(func_type->Parameter(i));
344 DCHECK(type != kAstStmt); 344 DCHECK(type != kAstStmt);
345 LookupOrInsertLocal(scope->parameter(i), type); 345 LookupOrInsertLocal(scope->parameter(i), type);
346 } 346 }
347 } else { 347 } else {
348 UNREACHABLE(); 348 UNREACHABLE();
349 } 349 }
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 current_function_builder_ = builder_->FunctionAt(init_function_index_); 458 current_function_builder_ = builder_->FunctionAt(init_function_index_);
459 in_function_ = true; 459 in_function_ = true;
460 } 460 }
461 461
462 void UnLoadInitFunction() { 462 void UnLoadInitFunction() {
463 in_function_ = false; 463 in_function_ = false;
464 current_function_builder_ = nullptr; 464 current_function_builder_ = nullptr;
465 } 465 }
466 466
467 void AddFunctionTable(VariableProxy* table, ArrayLiteral* funcs) { 467 void AddFunctionTable(VariableProxy* table, ArrayLiteral* funcs) {
468 Type::FunctionType* func_type = 468 FunctionType* func_type =
469 funcs->bounds().lower->AsArray()->Element()->AsFunction(); 469 funcs->bounds().lower->AsArray()->Element()->AsFunction();
470 LocalType return_type = TypeFrom(func_type->Result()); 470 LocalType return_type = TypeFrom(func_type->Result());
471 FunctionSig::Builder sig(zone(), return_type == kAstStmt ? 0 : 1, 471 FunctionSig::Builder sig(zone(), return_type == kAstStmt ? 0 : 1,
472 func_type->Arity()); 472 func_type->Arity());
473 if (return_type != kAstStmt) { 473 if (return_type != kAstStmt) {
474 sig.AddReturn(static_cast<LocalType>(return_type)); 474 sig.AddReturn(static_cast<LocalType>(return_type));
475 } 475 }
476 for (int i = 0; i < func_type->Arity(); i++) { 476 for (int i = 0; i < func_type->Arity(); i++) {
477 sig.AddParam(TypeFrom(func_type->Parameter(i))); 477 sig.AddParam(TypeFrom(func_type->Parameter(i)));
478 } 478 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 } 544 }
545 } 545 }
546 546
547 void VisitYield(Yield* expr) { UNREACHABLE(); } 547 void VisitYield(Yield* expr) { UNREACHABLE(); }
548 548
549 void VisitThrow(Throw* expr) { UNREACHABLE(); } 549 void VisitThrow(Throw* expr) { UNREACHABLE(); }
550 550
551 void VisitProperty(Property* expr) { 551 void VisitProperty(Property* expr) {
552 Expression* obj = expr->obj(); 552 Expression* obj = expr->obj();
553 DCHECK(obj->bounds().lower == obj->bounds().upper); 553 DCHECK(obj->bounds().lower == obj->bounds().upper);
554 TypeImpl<ZoneTypeConfig>* type = obj->bounds().lower; 554 Type* type = obj->bounds().lower;
555 MachineType mtype; 555 MachineType mtype;
556 int size; 556 int size;
557 if (type->Is(cache_.kUint8Array)) { 557 if (type->Is(cache_.kUint8Array)) {
558 mtype = MachineType::Uint8(); 558 mtype = MachineType::Uint8();
559 size = 1; 559 size = 1;
560 } else if (type->Is(cache_.kInt8Array)) { 560 } else if (type->Is(cache_.kInt8Array)) {
561 mtype = MachineType::Int8(); 561 mtype = MachineType::Int8();
562 size = 1; 562 size = 1;
563 } else if (type->Is(cache_.kUint16Array)) { 563 } else if (type->Is(cache_.kUint16Array)) {
564 mtype = MachineType::Uint16(); 564 mtype = MachineType::Uint16();
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 left_index = kInt32; 944 left_index = kInt32;
945 right_index = kInt32; 945 right_index = kInt32;
946 } 946 }
947 DCHECK((left_index == right_index) || 947 DCHECK((left_index == right_index) ||
948 (ignore_sign && (left_index <= 1) && (right_index <= 1))); 948 (ignore_sign && (left_index <= 1) && (right_index <= 1)));
949 return left_index; 949 return left_index;
950 } 950 }
951 951
952 TypeIndex TypeIndexOf(Expression* expr) { 952 TypeIndex TypeIndexOf(Expression* expr) {
953 DCHECK(expr->bounds().lower == expr->bounds().upper); 953 DCHECK(expr->bounds().lower == expr->bounds().upper);
954 TypeImpl<ZoneTypeConfig>* type = expr->bounds().lower; 954 Type* type = expr->bounds().lower;
955 if (type->Is(cache_.kAsmFixnum)) { 955 if (type->Is(cache_.kAsmFixnum)) {
956 return kFixnum; 956 return kFixnum;
957 } else if (type->Is(cache_.kAsmSigned)) { 957 } else if (type->Is(cache_.kAsmSigned)) {
958 return kInt32; 958 return kInt32;
959 } else if (type->Is(cache_.kAsmUnsigned)) { 959 } else if (type->Is(cache_.kAsmUnsigned)) {
960 return kUint32; 960 return kUint32;
961 } else if (type->Is(cache_.kAsmInt)) { 961 } else if (type->Is(cache_.kAsmInt)) {
962 return kInt32; 962 return kInt32;
963 } else if (type->Is(cache_.kAsmFloat)) { 963 } else if (type->Is(cache_.kAsmFloat)) {
964 return kFloat32; 964 return kFloat32;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1056 entry->value = container; 1056 entry->value = container;
1057 } 1057 }
1058 return (reinterpret_cast<IndexContainer*>(entry->value))->index; 1058 return (reinterpret_cast<IndexContainer*>(entry->value))->index;
1059 } 1059 }
1060 1060
1061 LocalType TypeOf(Expression* expr) { 1061 LocalType TypeOf(Expression* expr) {
1062 DCHECK(expr->bounds().lower == expr->bounds().upper); 1062 DCHECK(expr->bounds().lower == expr->bounds().upper);
1063 return TypeFrom(expr->bounds().lower); 1063 return TypeFrom(expr->bounds().lower);
1064 } 1064 }
1065 1065
1066 LocalType TypeFrom(TypeImpl<ZoneTypeConfig>* type) { 1066 LocalType TypeFrom(Type* type) {
1067 if (type->Is(cache_.kAsmInt)) { 1067 if (type->Is(cache_.kAsmInt)) {
1068 return kAstI32; 1068 return kAstI32;
1069 } else if (type->Is(cache_.kAsmFloat)) { 1069 } else if (type->Is(cache_.kAsmFloat)) {
1070 return kAstF32; 1070 return kAstF32;
1071 } else if (type->Is(cache_.kAsmDouble)) { 1071 } else if (type->Is(cache_.kAsmDouble)) {
1072 return kAstF64; 1072 return kAstF64;
1073 } else { 1073 } else {
1074 return kAstStmt; 1074 return kAstStmt;
1075 } 1075 }
1076 } 1076 }
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 // that zone in constructor may be thrown away once wasm module is written. 1109 // that zone in constructor may be thrown away once wasm module is written.
1110 WasmModuleIndex* AsmWasmBuilder::Run() { 1110 WasmModuleIndex* AsmWasmBuilder::Run() {
1111 AsmWasmBuilderImpl impl(isolate_, zone_, literal_); 1111 AsmWasmBuilderImpl impl(isolate_, zone_, literal_);
1112 impl.Compile(); 1112 impl.Compile();
1113 WasmModuleWriter* writer = impl.builder_->Build(zone_); 1113 WasmModuleWriter* writer = impl.builder_->Build(zone_);
1114 return writer->WriteTo(zone_); 1114 return writer->WriteTo(zone_);
1115 } 1115 }
1116 } // namespace wasm 1116 } // namespace wasm
1117 } // namespace internal 1117 } // namespace internal
1118 } // namespace v8 1118 } // namespace v8
OLDNEW
« no previous file with comments | « src/typing-asm.cc ('k') | test/cctest/test-asm-validator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698