diff options
author | jkim <jkim@FreeBSD.org> | 2013-05-17 23:13:40 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2013-05-17 23:13:40 +0000 |
commit | af69f95bba3597db53a980597cfd371c9f6ee7cf (patch) | |
tree | 740dae2325e162bb086ea6e7e5d481c4b669e232 /source/compiler/aslpredef.c | |
parent | 00f95aec269522bc092cf85fe57fcfc19efecec9 (diff) | |
download | FreeBSD-src-af69f95bba3597db53a980597cfd371c9f6ee7cf.zip FreeBSD-src-af69f95bba3597db53a980597cfd371c9f6ee7cf.tar.gz |
Import ACPICA 20130517.
Diffstat (limited to 'source/compiler/aslpredef.c')
-rw-r--r-- | source/compiler/aslpredef.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/source/compiler/aslpredef.c b/source/compiler/aslpredef.c index 3895681..60b5269 100644 --- a/source/compiler/aslpredef.c +++ b/source/compiler/aslpredef.c @@ -310,7 +310,6 @@ ApCheckPredefinedReturnValue ( break; default: - /* * All other ops are very difficult or impossible to typecheck at * compile time. These include all Localx, Argx, and method @@ -379,6 +378,7 @@ ApCheckForPredefinedObject ( return; default: + break; } @@ -624,33 +624,53 @@ ApCheckObjectType ( case PARSEOP_ONE: case PARSEOP_ONES: case PARSEOP_INTEGER: + ReturnBtype = ACPI_RTYPE_INTEGER; TypeName = "Integer"; break; case PARSEOP_STRING_LITERAL: + ReturnBtype = ACPI_RTYPE_STRING; TypeName = "String"; break; case PARSEOP_BUFFER: + ReturnBtype = ACPI_RTYPE_BUFFER; TypeName = "Buffer"; break; case PARSEOP_PACKAGE: case PARSEOP_VAR_PACKAGE: + ReturnBtype = ACPI_RTYPE_PACKAGE; TypeName = "Package"; break; case PARSEOP_NAMESEG: case PARSEOP_NAMESTRING: + /* + * Ignore any named references within a package object. + * + * For Package objects, references are allowed instead of any of the + * standard data types (Integer/String/Buffer/Package). These + * references are resolved at runtime. NAMESEG and NAMESTRING are + * impossible to typecheck at compile time because the type of + * any named object can be changed at runtime (for example, + * CopyObject will change the type of the target object). + */ + if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT) + { + return (AE_OK); + } + ReturnBtype = ACPI_RTYPE_REFERENCE; TypeName = "Reference"; break; default: + /* Not one of the supported object types */ TypeName = UtGetOpName (Op->Asl.ParseOpcode); |